@futdevpro/ccap 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/ccap.js +8 -0
- package/cli/build/_collections/auto-start.util.d.ts +15 -0
- package/cli/build/_collections/auto-start.util.d.ts.map +1 -0
- package/cli/build/_collections/auto-start.util.js +75 -0
- package/cli/build/_collections/auto-start.util.js.map +1 -0
- package/cli/build/_collections/config.util.d.ts +13 -0
- package/cli/build/_collections/config.util.d.ts.map +1 -0
- package/cli/build/_collections/config.util.js +71 -0
- package/cli/build/_collections/config.util.js.map +1 -0
- package/cli/build/_collections/config.util.spec.d.ts +2 -0
- package/cli/build/_collections/config.util.spec.d.ts.map +1 -0
- package/cli/build/_collections/config.util.spec.js +45 -0
- package/cli/build/_collections/config.util.spec.js.map +1 -0
- package/cli/build/_collections/ensure-setup.util.d.ts +14 -0
- package/cli/build/_collections/ensure-setup.util.d.ts.map +1 -0
- package/cli/build/_collections/ensure-setup.util.js +36 -0
- package/cli/build/_collections/ensure-setup.util.js.map +1 -0
- package/cli/build/_collections/setup-wizard.util.d.ts +22 -0
- package/cli/build/_collections/setup-wizard.util.d.ts.map +1 -0
- package/cli/build/_collections/setup-wizard.util.js +275 -0
- package/cli/build/_collections/setup-wizard.util.js.map +1 -0
- package/cli/build/_collections/setup.util.d.ts +79 -0
- package/cli/build/_collections/setup.util.d.ts.map +1 -0
- package/cli/build/_collections/setup.util.js +191 -0
- package/cli/build/_collections/setup.util.js.map +1 -0
- package/cli/build/_commands/chat.d.ts +7 -0
- package/cli/build/_commands/chat.d.ts.map +1 -0
- package/cli/build/_commands/chat.js +173 -0
- package/cli/build/_commands/chat.js.map +1 -0
- package/cli/build/_commands/config.d.ts +6 -0
- package/cli/build/_commands/config.d.ts.map +1 -0
- package/cli/build/_commands/config.js +70 -0
- package/cli/build/_commands/config.js.map +1 -0
- package/cli/build/_commands/init.d.ts +8 -0
- package/cli/build/_commands/init.d.ts.map +1 -0
- package/cli/build/_commands/init.js +25 -0
- package/cli/build/_commands/init.js.map +1 -0
- package/cli/build/_commands/restart.d.ts +5 -0
- package/cli/build/_commands/restart.d.ts.map +1 -0
- package/cli/build/_commands/restart.js +21 -0
- package/cli/build/_commands/restart.js.map +1 -0
- package/cli/build/_commands/sessions.d.ts +5 -0
- package/cli/build/_commands/sessions.d.ts.map +1 -0
- package/cli/build/_commands/sessions.js +54 -0
- package/cli/build/_commands/sessions.js.map +1 -0
- package/cli/build/_commands/start.d.ts +12 -0
- package/cli/build/_commands/start.d.ts.map +1 -0
- package/cli/build/_commands/start.js +75 -0
- package/cli/build/_commands/start.js.map +1 -0
- package/cli/build/_commands/status.d.ts +6 -0
- package/cli/build/_commands/status.d.ts.map +1 -0
- package/cli/build/_commands/status.js +71 -0
- package/cli/build/_commands/status.js.map +1 -0
- package/cli/build/_commands/stop.d.ts +6 -0
- package/cli/build/_commands/stop.d.ts.map +1 -0
- package/cli/build/_commands/stop.js +41 -0
- package/cli/build/_commands/stop.js.map +1 -0
- package/cli/build/_commands/vault-key.d.ts +7 -0
- package/cli/build/_commands/vault-key.d.ts.map +1 -0
- package/cli/build/_commands/vault-key.js +36 -0
- package/cli/build/_commands/vault-key.js.map +1 -0
- package/cli/build/_commands/version.d.ts +5 -0
- package/cli/build/_commands/version.d.ts.map +1 -0
- package/cli/build/_commands/version.js +13 -0
- package/cli/build/_commands/version.js.map +1 -0
- package/cli/build/program.d.ts +3 -0
- package/cli/build/program.d.ts.map +1 -0
- package/cli/build/program.js +97 -0
- package/cli/build/program.js.map +1 -0
- package/client-dist/3rdpartylicenses.txt +569 -0
- package/client-dist/browser/chunk-KJ7FQNUG.js +1 -0
- package/client-dist/browser/chunk-UTNU5A7U.js +218 -0
- package/client-dist/browser/index.html +13 -0
- package/client-dist/browser/main-RHNH7LDD.js +2 -0
- package/client-dist/browser/polyfills-HGDOEU5L.js +2 -0
- package/client-dist/browser/styles-VWWGDWT7.css +1 -0
- package/package.json +54 -0
- package/server/build/package.json +60 -0
- package/server/build/src/_collections/consts/agent.const.js +26 -0
- package/server/build/src/_collections/consts/agent.const.js.map +1 -0
- package/server/build/src/_collections/consts/compacting.const.js +14 -0
- package/server/build/src/_collections/consts/compacting.const.js.map +1 -0
- package/server/build/src/_collections/consts/run-status-transitions.const.js +26 -0
- package/server/build/src/_collections/consts/run-status-transitions.const.js.map +1 -0
- package/server/build/src/_collections/consts/run-status-transitions.const.spec.js +41 -0
- package/server/build/src/_collections/consts/run-status-transitions.const.spec.js.map +1 -0
- package/server/build/src/_collections/contract-templates/context.contract-template.js +19 -0
- package/server/build/src/_collections/contract-templates/context.contract-template.js.map +1 -0
- package/server/build/src/_collections/contract-templates/execution-summary.contract-template.js +20 -0
- package/server/build/src/_collections/contract-templates/execution-summary.contract-template.js.map +1 -0
- package/server/build/src/_collections/contract-templates/history-summary.contract-template.js +19 -0
- package/server/build/src/_collections/contract-templates/history-summary.contract-template.js.map +1 -0
- package/server/build/src/_collections/contract-templates/run.contract-template.js +14 -0
- package/server/build/src/_collections/contract-templates/run.contract-template.js.map +1 -0
- package/server/build/src/_collections/contract-templates/session.contract-template.js +15 -0
- package/server/build/src/_collections/contract-templates/session.contract-template.js.map +1 -0
- package/server/build/src/_enums/ccap-context-key-source.type-enum.js +15 -0
- package/server/build/src/_enums/ccap-context-key-source.type-enum.js.map +1 -0
- package/server/build/src/_enums/ccap-context-key-status.type-enum.js +14 -0
- package/server/build/src/_enums/ccap-context-key-status.type-enum.js.map +1 -0
- package/server/build/src/_enums/ccap-contract.type-enum.js +16 -0
- package/server/build/src/_enums/ccap-contract.type-enum.js.map +1 -0
- package/server/build/src/_enums/ccap-conversation-type.type-enum.js +15 -0
- package/server/build/src/_enums/ccap-conversation-type.type-enum.js.map +1 -0
- package/server/build/src/_enums/ccap-llm-call-type.type-enum.js +21 -0
- package/server/build/src/_enums/ccap-llm-call-type.type-enum.js.map +1 -0
- package/server/build/src/_enums/ccap-llm-provider-name.type-enum.js +18 -0
- package/server/build/src/_enums/ccap-llm-provider-name.type-enum.js.map +1 -0
- package/server/build/src/_enums/ccap-message-role.type-enum.js +15 -0
- package/server/build/src/_enums/ccap-message-role.type-enum.js.map +1 -0
- package/server/build/src/_enums/ccap-messaging-provider-name.type-enum.js +20 -0
- package/server/build/src/_enums/ccap-messaging-provider-name.type-enum.js.map +1 -0
- package/server/build/src/_enums/ccap-monitoring-event.type-enum.js +18 -0
- package/server/build/src/_enums/ccap-monitoring-event.type-enum.js.map +1 -0
- package/server/build/src/_enums/ccap-run-action.type-enum.js +15 -0
- package/server/build/src/_enums/ccap-run-action.type-enum.js.map +1 -0
- package/server/build/src/_enums/ccap-run-status.type-enum.js +18 -0
- package/server/build/src/_enums/ccap-run-status.type-enum.js.map +1 -0
- package/server/build/src/_enums/ccap-session-status.type-enum.js +14 -0
- package/server/build/src/_enums/ccap-session-status.type-enum.js.map +1 -0
- package/server/build/src/_enums/ccap-system-prompt-part.type-enum.js +16 -0
- package/server/build/src/_enums/ccap-system-prompt-part.type-enum.js.map +1 -0
- package/server/build/src/_enums/ccap-tool-category.type-enum.js +17 -0
- package/server/build/src/_enums/ccap-tool-category.type-enum.js.map +1 -0
- package/server/build/src/_enums/ccap-tool-entry-type.type-enum.js +13 -0
- package/server/build/src/_enums/ccap-tool-entry-type.type-enum.js.map +1 -0
- package/server/build/src/_models/data-models/ccap-conversation-active.data-model.js +34 -0
- package/server/build/src/_models/data-models/ccap-conversation-active.data-model.js.map +1 -0
- package/server/build/src/_models/data-models/ccap-conversation-full-active.data-model.js +40 -0
- package/server/build/src/_models/data-models/ccap-conversation-full-active.data-model.js.map +1 -0
- package/server/build/src/_models/data-models/ccap-conversation-full.data-model.js +30 -0
- package/server/build/src/_models/data-models/ccap-conversation-full.data-model.js.map +1 -0
- package/server/build/src/_models/data-models/ccap-conversation.data-model.js +30 -0
- package/server/build/src/_models/data-models/ccap-conversation.data-model.js.map +1 -0
- package/server/build/src/_models/data-models/ccap-error.data-model.js +40 -0
- package/server/build/src/_models/data-models/ccap-error.data-model.js.map +1 -0
- package/server/build/src/_models/data-models/ccap-run.data-model.js +56 -0
- package/server/build/src/_models/data-models/ccap-run.data-model.js.map +1 -0
- package/server/build/src/_models/data-models/ccap-secret.data-model.js +39 -0
- package/server/build/src/_models/data-models/ccap-secret.data-model.js.map +1 -0
- package/server/build/src/_models/data-models/ccap-session.data-model.js +69 -0
- package/server/build/src/_models/data-models/ccap-session.data-model.js.map +1 -0
- package/server/build/src/_models/interfaces/ccap-agentic-decision.interface.js +3 -0
- package/server/build/src/_models/interfaces/ccap-agentic-decision.interface.js.map +1 -0
- package/server/build/src/_models/interfaces/ccap-assistant-message.interface.js +3 -0
- package/server/build/src/_models/interfaces/ccap-assistant-message.interface.js.map +1 -0
- package/server/build/src/_models/interfaces/ccap-channel-identifier.interface.js +23 -0
- package/server/build/src/_models/interfaces/ccap-channel-identifier.interface.js.map +1 -0
- package/server/build/src/_models/interfaces/ccap-common-context.interface.js +3 -0
- package/server/build/src/_models/interfaces/ccap-common-context.interface.js.map +1 -0
- package/server/build/src/_models/interfaces/ccap-compacted-soul.interface.js +3 -0
- package/server/build/src/_models/interfaces/ccap-compacted-soul.interface.js.map +1 -0
- package/server/build/src/_models/interfaces/ccap-context-contract.interface.js +3 -0
- package/server/build/src/_models/interfaces/ccap-context-contract.interface.js.map +1 -0
- package/server/build/src/_models/interfaces/ccap-context-key.interface.js +3 -0
- package/server/build/src/_models/interfaces/ccap-context-key.interface.js.map +1 -0
- package/server/build/src/_models/interfaces/ccap-context-state.interface.js +3 -0
- package/server/build/src/_models/interfaces/ccap-context-state.interface.js.map +1 -0
- package/server/build/src/_models/interfaces/ccap-context.interface.js +3 -0
- package/server/build/src/_models/interfaces/ccap-context.interface.js.map +1 -0
- package/server/build/src/_models/interfaces/ccap-execution-summary-contract.interface.js +3 -0
- package/server/build/src/_models/interfaces/ccap-execution-summary-contract.interface.js.map +1 -0
- package/server/build/src/_models/interfaces/ccap-history-summary-contract.interface.js +3 -0
- package/server/build/src/_models/interfaces/ccap-history-summary-contract.interface.js.map +1 -0
- package/server/build/src/_models/interfaces/ccap-llm-call-options.interface.js +3 -0
- package/server/build/src/_models/interfaces/ccap-llm-call-options.interface.js.map +1 -0
- package/server/build/src/_models/interfaces/ccap-llm-provider.interface.js +3 -0
- package/server/build/src/_models/interfaces/ccap-llm-provider.interface.js.map +1 -0
- package/server/build/src/_models/interfaces/ccap-llm-response.interface.js +3 -0
- package/server/build/src/_models/interfaces/ccap-llm-response.interface.js.map +1 -0
- package/server/build/src/_models/interfaces/ccap-message.interface.js +3 -0
- package/server/build/src/_models/interfaces/ccap-message.interface.js.map +1 -0
- package/server/build/src/_models/interfaces/ccap-messaging-provider.interface.js +3 -0
- package/server/build/src/_models/interfaces/ccap-messaging-provider.interface.js.map +1 -0
- package/server/build/src/_models/interfaces/ccap-monitoring-event.interface.js +3 -0
- package/server/build/src/_models/interfaces/ccap-monitoring-event.interface.js.map +1 -0
- package/server/build/src/_models/interfaces/ccap-run-finalization-result.interface.js +3 -0
- package/server/build/src/_models/interfaces/ccap-run-finalization-result.interface.js.map +1 -0
- package/server/build/src/_models/interfaces/ccap-session-info.interface.js +3 -0
- package/server/build/src/_models/interfaces/ccap-session-info.interface.js.map +1 -0
- package/server/build/src/_models/interfaces/ccap-setup-config.interface.js +3 -0
- package/server/build/src/_models/interfaces/ccap-setup-config.interface.js.map +1 -0
- package/server/build/src/_models/interfaces/ccap-soul.interface.js +3 -0
- package/server/build/src/_models/interfaces/ccap-soul.interface.js.map +1 -0
- package/server/build/src/_models/interfaces/ccap-system-message.interface.js +3 -0
- package/server/build/src/_models/interfaces/ccap-system-message.interface.js.map +1 -0
- package/server/build/src/_models/interfaces/ccap-tool-call-message.interface.js +3 -0
- package/server/build/src/_models/interfaces/ccap-tool-call-message.interface.js.map +1 -0
- package/server/build/src/_models/interfaces/ccap-tool-call-result.interface.js +3 -0
- package/server/build/src/_models/interfaces/ccap-tool-call-result.interface.js.map +1 -0
- package/server/build/src/_models/interfaces/ccap-tool-group.interface.js +3 -0
- package/server/build/src/_models/interfaces/ccap-tool-group.interface.js.map +1 -0
- package/server/build/src/_models/interfaces/ccap-tool-in-context.interface.js +3 -0
- package/server/build/src/_models/interfaces/ccap-tool-in-context.interface.js.map +1 -0
- package/server/build/src/_models/interfaces/ccap-tool-result-message.interface.js +3 -0
- package/server/build/src/_models/interfaces/ccap-tool-result-message.interface.js.map +1 -0
- package/server/build/src/_models/interfaces/ccap-tool.interface.js +3 -0
- package/server/build/src/_models/interfaces/ccap-tool.interface.js.map +1 -0
- package/server/build/src/_models/interfaces/ccap-user-message.interface.js +3 -0
- package/server/build/src/_models/interfaces/ccap-user-message.interface.js.map +1 -0
- package/server/build/src/_modules/agent/agentic-loop.control-service.js +231 -0
- package/server/build/src/_modules/agent/agentic-loop.control-service.js.map +1 -0
- package/server/build/src/_modules/agent/analyze.control-service.js +189 -0
- package/server/build/src/_modules/agent/analyze.control-service.js.map +1 -0
- package/server/build/src/_modules/agent/assemble-conversation.control-service.js +204 -0
- package/server/build/src/_modules/agent/assemble-conversation.control-service.js.map +1 -0
- package/server/build/src/_modules/agent/compacting/_collections/compacting.const.js +26 -0
- package/server/build/src/_modules/agent/compacting/_collections/compacting.const.js.map +1 -0
- package/server/build/src/_modules/agent/compacting/chat-history-compacting.control-service.js +67 -0
- package/server/build/src/_modules/agent/compacting/chat-history-compacting.control-service.js.map +1 -0
- package/server/build/src/_modules/agent/compacting/context-compacting.control-service.js +41 -0
- package/server/build/src/_modules/agent/compacting/context-compacting.control-service.js.map +1 -0
- package/server/build/src/_modules/agent/compacting/conversation-full-active-compacting.control-service.js +245 -0
- package/server/build/src/_modules/agent/compacting/conversation-full-active-compacting.control-service.js.map +1 -0
- package/server/build/src/_modules/agent/compacting/execution-history-compacting.control-service.js +105 -0
- package/server/build/src/_modules/agent/compacting/execution-history-compacting.control-service.js.map +1 -0
- package/server/build/src/_modules/agent/compacting/soul-compacting.control-service.js +84 -0
- package/server/build/src/_modules/agent/compacting/soul-compacting.control-service.js.map +1 -0
- package/server/build/src/_modules/agent/compacting/tool-result-compacting.control-service.js +109 -0
- package/server/build/src/_modules/agent/compacting/tool-result-compacting.control-service.js.map +1 -0
- package/server/build/src/_modules/agent/execution.control-service.js +84 -0
- package/server/build/src/_modules/agent/execution.control-service.js.map +1 -0
- package/server/build/src/_modules/agent/history/chat-history.control-service.js +106 -0
- package/server/build/src/_modules/agent/history/chat-history.control-service.js.map +1 -0
- package/server/build/src/_modules/agent/history/execution-history.control-service.js +128 -0
- package/server/build/src/_modules/agent/history/execution-history.control-service.js.map +1 -0
- package/server/build/src/_modules/agent/history/execution-history.control-service.spec.js +154 -0
- package/server/build/src/_modules/agent/history/execution-history.control-service.spec.js.map +1 -0
- package/server/build/src/_modules/agent/new-user-message-handling.control-service.js +125 -0
- package/server/build/src/_modules/agent/new-user-message-handling.control-service.js.map +1 -0
- package/server/build/src/_modules/agent/new-user-message-handling.control-service.spec.js +105 -0
- package/server/build/src/_modules/agent/new-user-message-handling.control-service.spec.js.map +1 -0
- package/server/build/src/_modules/agent/run-finalization.control-service.js +210 -0
- package/server/build/src/_modules/agent/run-finalization.control-service.js.map +1 -0
- package/server/build/src/_modules/agent/run-flow-e2e.spec.js +226 -0
- package/server/build/src/_modules/agent/run-flow-e2e.spec.js.map +1 -0
- package/server/build/src/_modules/agent/run-flow.control-service.js +346 -0
- package/server/build/src/_modules/agent/run-flow.control-service.js.map +1 -0
- package/server/build/src/_modules/agent/run-initialization.control-service.js +47 -0
- package/server/build/src/_modules/agent/run-initialization.control-service.js.map +1 -0
- package/server/build/src/_modules/agent/run.data-service.js +149 -0
- package/server/build/src/_modules/agent/run.data-service.js.map +1 -0
- package/server/build/src/_modules/agent/session-mutex.control-service.js +96 -0
- package/server/build/src/_modules/agent/session-mutex.control-service.js.map +1 -0
- package/server/build/src/_modules/agent/session-mutex.control-service.spec.js +48 -0
- package/server/build/src/_modules/agent/session-mutex.control-service.spec.js.map +1 -0
- package/server/build/src/_modules/agent/tool-calling.control-service.js +186 -0
- package/server/build/src/_modules/agent/tool-calling.control-service.js.map +1 -0
- package/server/build/src/_modules/context/_collections/context.const.js +34 -0
- package/server/build/src/_modules/context/_collections/context.const.js.map +1 -0
- package/server/build/src/_modules/context/_collections/context.const.spec.js +20 -0
- package/server/build/src/_modules/context/_collections/context.const.spec.js.map +1 -0
- package/server/build/src/_modules/context/common-context.data-service.js +78 -0
- package/server/build/src/_modules/context/common-context.data-service.js.map +1 -0
- package/server/build/src/_modules/context/context-builder.util-service.js +139 -0
- package/server/build/src/_modules/context/context-builder.util-service.js.map +1 -0
- package/server/build/src/_modules/context/context-builder.util-service.spec.js +157 -0
- package/server/build/src/_modules/context/context-builder.util-service.spec.js.map +1 -0
- package/server/build/src/_modules/context/context-management.control-service.js +365 -0
- package/server/build/src/_modules/context/context-management.control-service.js.map +1 -0
- package/server/build/src/_modules/context/context-management.control-service.spec.js +305 -0
- package/server/build/src/_modules/context/context-management.control-service.spec.js.map +1 -0
- package/server/build/src/_modules/context/knowledge.data-service.js +70 -0
- package/server/build/src/_modules/context/knowledge.data-service.js.map +1 -0
- package/server/build/src/_modules/context/session-info-context.data-service.js +45 -0
- package/server/build/src/_modules/context/session-info-context.data-service.js.map +1 -0
- package/server/build/src/_modules/database/database.data-service.js +35 -0
- package/server/build/src/_modules/database/database.data-service.js.map +1 -0
- package/server/build/src/_modules/default-path/default-path.util-service.js +49 -0
- package/server/build/src/_modules/default-path/default-path.util-service.js.map +1 -0
- package/server/build/src/_modules/default-path/default-path.util-service.spec.js +61 -0
- package/server/build/src/_modules/default-path/default-path.util-service.spec.js.map +1 -0
- package/server/build/src/_modules/default-path/soul-file.util-service.js +111 -0
- package/server/build/src/_modules/default-path/soul-file.util-service.js.map +1 -0
- package/server/build/src/_modules/default-path/soul-file.util-service.spec.js +36 -0
- package/server/build/src/_modules/default-path/soul-file.util-service.spec.js.map +1 -0
- package/server/build/src/_modules/error-handling/ccap-analyze-cancelled.error.js +18 -0
- package/server/build/src/_modules/error-handling/ccap-analyze-cancelled.error.js.map +1 -0
- package/server/build/src/_modules/error-handling/error-collector.util-service.js +78 -0
- package/server/build/src/_modules/error-handling/error-collector.util-service.js.map +1 -0
- package/server/build/src/_modules/error-handling/error-collector.util-service.spec.js +38 -0
- package/server/build/src/_modules/error-handling/error-collector.util-service.spec.js.map +1 -0
- package/server/build/src/_modules/error-handling/error-table.data-service.js +59 -0
- package/server/build/src/_modules/error-handling/error-table.data-service.js.map +1 -0
- package/server/build/src/_modules/llm/_collections/llm.const.js +28 -0
- package/server/build/src/_modules/llm/_collections/llm.const.js.map +1 -0
- package/server/build/src/_modules/llm/_collections/llm.const.spec.js +24 -0
- package/server/build/src/_modules/llm/_collections/llm.const.spec.js.map +1 -0
- package/server/build/src/_modules/llm/_collections/prompt-templates/agentic-loop.prompt-template.js +48 -0
- package/server/build/src/_modules/llm/_collections/prompt-templates/agentic-loop.prompt-template.js.map +1 -0
- package/server/build/src/_modules/llm/_collections/prompt-templates/analyze.prompt-template.js +52 -0
- package/server/build/src/_modules/llm/_collections/prompt-templates/analyze.prompt-template.js.map +1 -0
- package/server/build/src/_modules/llm/_collections/prompt-templates/chat-history-compacting.prompt-template.js +28 -0
- package/server/build/src/_modules/llm/_collections/prompt-templates/chat-history-compacting.prompt-template.js.map +1 -0
- package/server/build/src/_modules/llm/_collections/prompt-templates/context-compacting.prompt-template.js +27 -0
- package/server/build/src/_modules/llm/_collections/prompt-templates/context-compacting.prompt-template.js.map +1 -0
- package/server/build/src/_modules/llm/_collections/prompt-templates/execution-history-compacting.prompt-template.js +45 -0
- package/server/build/src/_modules/llm/_collections/prompt-templates/execution-history-compacting.prompt-template.js.map +1 -0
- package/server/build/src/_modules/llm/_collections/prompt-templates/run-finalization.prompt-template.js +30 -0
- package/server/build/src/_modules/llm/_collections/prompt-templates/run-finalization.prompt-template.js.map +1 -0
- package/server/build/src/_modules/llm/_collections/prompt-templates/soul-compacting.prompt-template.js +26 -0
- package/server/build/src/_modules/llm/_collections/prompt-templates/soul-compacting.prompt-template.js.map +1 -0
- package/server/build/src/_modules/llm/_collections/prompt-templates/tool-description.prompt-template.js +25 -0
- package/server/build/src/_modules/llm/_collections/prompt-templates/tool-description.prompt-template.js.map +1 -0
- package/server/build/src/_modules/llm/_collections/prompt-templates/tool-result-chunking.prompt-template.js +54 -0
- package/server/build/src/_modules/llm/_collections/prompt-templates/tool-result-chunking.prompt-template.js.map +1 -0
- package/server/build/src/_modules/llm/llm.control-service.js +137 -0
- package/server/build/src/_modules/llm/llm.control-service.js.map +1 -0
- package/server/build/src/_modules/llm/providers/custom-local-ai-llm.control-service.js +128 -0
- package/server/build/src/_modules/llm/providers/custom-local-ai-llm.control-service.js.map +1 -0
- package/server/build/src/_modules/llm/providers/openai-llm.control-service.js +120 -0
- package/server/build/src/_modules/llm/providers/openai-llm.control-service.js.map +1 -0
- package/server/build/src/_modules/llm/system-prompt.data-service.js +124 -0
- package/server/build/src/_modules/llm/system-prompt.data-service.js.map +1 -0
- package/server/build/src/_modules/llm/system-prompt.data-service.spec.js +138 -0
- package/server/build/src/_modules/llm/system-prompt.data-service.spec.js.map +1 -0
- package/server/build/src/_modules/messaging/_collections/messaging.const.js +30 -0
- package/server/build/src/_modules/messaging/_collections/messaging.const.js.map +1 -0
- package/server/build/src/_modules/messaging/_collections/messaging.const.spec.js +18 -0
- package/server/build/src/_modules/messaging/_collections/messaging.const.spec.js.map +1 -0
- package/server/build/src/_modules/messaging/messaging-router.control-service.js +224 -0
- package/server/build/src/_modules/messaging/messaging-router.control-service.js.map +1 -0
- package/server/build/src/_modules/messaging/messaging-router.control-service.spec.js +141 -0
- package/server/build/src/_modules/messaging/messaging-router.control-service.spec.js.map +1 -0
- package/server/build/src/_modules/messaging/providers/ccap-client-messaging.control-service.js +256 -0
- package/server/build/src/_modules/messaging/providers/ccap-client-messaging.control-service.js.map +1 -0
- package/server/build/src/_modules/messaging/providers/ccap-client-socket-server.service.js +51 -0
- package/server/build/src/_modules/messaging/providers/ccap-client-socket-server.service.js.map +1 -0
- package/server/build/src/_modules/messaging/providers/cli-messaging.control-service.js +89 -0
- package/server/build/src/_modules/messaging/providers/cli-messaging.control-service.js.map +1 -0
- package/server/build/src/_modules/messaging/providers/discord-messaging.control-service.js +121 -0
- package/server/build/src/_modules/messaging/providers/discord-messaging.control-service.js.map +1 -0
- package/server/build/src/_modules/monitoring/monitoring.data-service.js +99 -0
- package/server/build/src/_modules/monitoring/monitoring.data-service.js.map +1 -0
- package/server/build/src/_modules/monitoring/monitoring.data-service.spec.js +50 -0
- package/server/build/src/_modules/monitoring/monitoring.data-service.spec.js.map +1 -0
- package/server/build/src/_modules/path-protection/path-protection.util-service.js +84 -0
- package/server/build/src/_modules/path-protection/path-protection.util-service.js.map +1 -0
- package/server/build/src/_modules/path-protection/path-protection.util-service.spec.js +55 -0
- package/server/build/src/_modules/path-protection/path-protection.util-service.spec.js.map +1 -0
- package/server/build/src/_modules/secrets-vault/secrets-vault.data-service.js +186 -0
- package/server/build/src/_modules/secrets-vault/secrets-vault.data-service.js.map +1 -0
- package/server/build/src/_modules/session/conversation.data-service.js +241 -0
- package/server/build/src/_modules/session/conversation.data-service.js.map +1 -0
- package/server/build/src/_modules/session/session.data-service.js +265 -0
- package/server/build/src/_modules/session/session.data-service.js.map +1 -0
- package/server/build/src/_modules/setup-config/setup-config.data-service.js +95 -0
- package/server/build/src/_modules/setup-config/setup-config.data-service.js.map +1 -0
- package/server/build/src/_modules/tools/_collections/tools.const.js +20 -0
- package/server/build/src/_modules/tools/_collections/tools.const.js.map +1 -0
- package/server/build/src/_modules/tools/fixed-tools/control/context-handling.tool.js +135 -0
- package/server/build/src/_modules/tools/fixed-tools/control/context-handling.tool.js.map +1 -0
- package/server/build/src/_modules/tools/fixed-tools/control/session-handling.tool.js +46 -0
- package/server/build/src/_modules/tools/fixed-tools/control/session-handling.tool.js.map +1 -0
- package/server/build/src/_modules/tools/fixed-tools/exec/exec.tool.js +119 -0
- package/server/build/src/_modules/tools/fixed-tools/exec/exec.tool.js.map +1 -0
- package/server/build/src/_modules/tools/fixed-tools/file-handling/file-handling.tool.js +179 -0
- package/server/build/src/_modules/tools/fixed-tools/file-handling/file-handling.tool.js.map +1 -0
- package/server/build/src/_modules/tools/fixed-tools/net/net.tool.js +97 -0
- package/server/build/src/_modules/tools/fixed-tools/net/net.tool.js.map +1 -0
- package/server/build/src/_modules/tools/fixed-tools/tool-handling/tool-handling.tool.js +100 -0
- package/server/build/src/_modules/tools/fixed-tools/tool-handling/tool-handling.tool.js.map +1 -0
- package/server/build/src/_modules/tools/tool-execution.control-service.js +110 -0
- package/server/build/src/_modules/tools/tool-execution.control-service.js.map +1 -0
- package/server/build/src/_modules/tools/tool-registry.control-service.js +124 -0
- package/server/build/src/_modules/tools/tool-registry.control-service.js.map +1 -0
- package/server/build/src/_modules/tools/tools-in-context.util-service.js +90 -0
- package/server/build/src/_modules/tools/tools-in-context.util-service.js.map +1 -0
- package/server/build/src/_modules/tools/tools-in-context.util-service.spec.js +66 -0
- package/server/build/src/_modules/tools/tools-in-context.util-service.spec.js.map +1 -0
- package/server/build/src/_routes/client-static/client-static.controller.js +54 -0
- package/server/build/src/_routes/client-static/client-static.controller.js.map +1 -0
- package/server/build/src/_routes/messaging/messaging-message-body.interface.js +3 -0
- package/server/build/src/_routes/messaging/messaging-message-body.interface.js.map +1 -0
- package/server/build/src/_routes/messaging/messaging.controller.js +77 -0
- package/server/build/src/_routes/messaging/messaging.controller.js.map +1 -0
- package/server/build/src/_routes/server/server-status/server-status.controller.js +40 -0
- package/server/build/src/_routes/server/server-status/server-status.controller.js.map +1 -0
- package/server/build/src/_routes/server/server-status/server-status.controller.spec.js +19 -0
- package/server/build/src/_routes/server/server-status/server-status.controller.spec.js.map +1 -0
- package/server/build/src/_routes/server/server-status/server-status.data-service.js +11 -0
- package/server/build/src/_routes/server/server-status/server-status.data-service.js.map +1 -0
- package/server/build/src/_routes/session/context-api.data-service.js +69 -0
- package/server/build/src/_routes/session/context-api.data-service.js.map +1 -0
- package/server/build/src/_routes/session/conversation-api.data-service.js +69 -0
- package/server/build/src/_routes/session/conversation-api.data-service.js.map +1 -0
- package/server/build/src/_routes/session/monitoring-api.data-service.js +45 -0
- package/server/build/src/_routes/session/monitoring-api.data-service.js.map +1 -0
- package/server/build/src/_routes/session/session-api.data-service.js +70 -0
- package/server/build/src/_routes/session/session-api.data-service.js.map +1 -0
- package/server/build/src/_routes/session/session.controller.js +251 -0
- package/server/build/src/_routes/session/session.controller.js.map +1 -0
- package/server/build/src/_routes/setup/setup.controller.js +255 -0
- package/server/build/src/_routes/setup/setup.controller.js.map +1 -0
- package/server/build/src/app.server.js +232 -0
- package/server/build/src/app.server.js.map +1 -0
- package/server/build/src/app.server.spec.js +24 -0
- package/server/build/src/app.server.spec.js.map +1 -0
- package/server/build/src/index.js +9 -0
- package/server/build/src/index.js.map +1 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CCAP_DiscordMessaging_ControlService = void 0;
|
|
4
|
+
const discord_js_1 = require("discord.js");
|
|
5
|
+
const fsm_dynamo_1 = require("@futdevpro/fsm-dynamo");
|
|
6
|
+
const ccap_messaging_provider_name_type_enum_1 = require("../../../_enums/ccap-messaging-provider-name.type-enum");
|
|
7
|
+
/**
|
|
8
|
+
* Discord messaging provider control-service.
|
|
9
|
+
* Discord.js bot integráció: üzenet fogadás és küldés.
|
|
10
|
+
*/
|
|
11
|
+
class CCAP_DiscordMessaging_ControlService {
|
|
12
|
+
/** Discord.js client instance. */
|
|
13
|
+
client;
|
|
14
|
+
/** Bejövő üzenet callback. */
|
|
15
|
+
messageCallback;
|
|
16
|
+
/** Bot token (constructor vagy env). */
|
|
17
|
+
botToken;
|
|
18
|
+
constructor(params) {
|
|
19
|
+
this.botToken = params?.botToken;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Provider neve.
|
|
23
|
+
*/
|
|
24
|
+
getProviderName() {
|
|
25
|
+
return ccap_messaging_provider_name_type_enum_1.CCAP_MessagingProviderName_Type.discord;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Provider inicializálása: Discord bot csatlakozás.
|
|
29
|
+
*/
|
|
30
|
+
async initialize() {
|
|
31
|
+
this.botToken = this.botToken ?? process.env.CCAP_DISCORD_BOT_TOKEN;
|
|
32
|
+
if (!this.botToken) {
|
|
33
|
+
fsm_dynamo_1.DyFM_Log.testInfo('CCAP_DiscordMessaging | No bot token configured'
|
|
34
|
+
+ ' (set CCAP_DISCORD_BOT_TOKEN env var)');
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
this.client = new discord_js_1.Client({
|
|
38
|
+
intents: [
|
|
39
|
+
discord_js_1.GatewayIntentBits.Guilds,
|
|
40
|
+
discord_js_1.GatewayIntentBits.GuildMessages,
|
|
41
|
+
discord_js_1.GatewayIntentBits.MessageContent,
|
|
42
|
+
],
|
|
43
|
+
});
|
|
44
|
+
// Bejövő üzenet listener
|
|
45
|
+
this.client.on('messageCreate', async (message) => {
|
|
46
|
+
// Bot saját üzeneteit ignoráljuk
|
|
47
|
+
if (message.author.bot) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
if (this.messageCallback) {
|
|
51
|
+
await this.messageCallback({
|
|
52
|
+
channelId: message.channelId,
|
|
53
|
+
content: message.content,
|
|
54
|
+
rawMessage: message,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
this.client.on('ready', () => {
|
|
59
|
+
fsm_dynamo_1.DyFM_Log.success(`CCAP_DiscordMessaging | Bot connected: ${this.client?.user?.tag}`);
|
|
60
|
+
});
|
|
61
|
+
try {
|
|
62
|
+
await this.client.login(this.botToken);
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
fsm_dynamo_1.DyFM_Log.error('CCAP_DiscordMessaging | Failed to connect bot', error);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Bejövő üzenet listener regisztráció.
|
|
70
|
+
*/
|
|
71
|
+
onMessage(callback) {
|
|
72
|
+
this.messageCallback = callback;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Üzenet küldés egy Discord channel-re.
|
|
76
|
+
*/
|
|
77
|
+
async sendMessage(params) {
|
|
78
|
+
if (!this.client) {
|
|
79
|
+
fsm_dynamo_1.DyFM_Log.error('CCAP_DiscordMessaging | Client not initialized');
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
try {
|
|
83
|
+
const channel = this.client.channels.cache.get(params.channelId);
|
|
84
|
+
if (!channel) {
|
|
85
|
+
fsm_dynamo_1.DyFM_Log.error(`CCAP_DiscordMessaging | Channel not found: ${params.channelId}`);
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
// Discord max 2000 karakter; hosszabb üzeneteket darabolunk
|
|
89
|
+
const maxLength = 2000;
|
|
90
|
+
const content = params.content;
|
|
91
|
+
if (content.length <= maxLength) {
|
|
92
|
+
await channel.send(content);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
// Darabolás soronként, ha lehetséges
|
|
96
|
+
let remaining = content;
|
|
97
|
+
while (remaining.length > 0) {
|
|
98
|
+
const chunk = remaining.substring(0, maxLength);
|
|
99
|
+
remaining = remaining.substring(maxLength);
|
|
100
|
+
await channel.send(chunk);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
fsm_dynamo_1.DyFM_Log.error(`CCAP_DiscordMessaging | Failed to send message`
|
|
106
|
+
+ ` | channel: ${params.channelId}`, error);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Provider leállítása.
|
|
111
|
+
*/
|
|
112
|
+
async shutdown() {
|
|
113
|
+
if (this.client) {
|
|
114
|
+
this.client.destroy();
|
|
115
|
+
this.client = undefined;
|
|
116
|
+
fsm_dynamo_1.DyFM_Log.testInfo('CCAP_DiscordMessaging | Bot disconnected');
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
exports.CCAP_DiscordMessaging_ControlService = CCAP_DiscordMessaging_ControlService;
|
|
121
|
+
//# sourceMappingURL=discord-messaging.control-service.js.map
|
package/server/build/src/_modules/messaging/providers/discord-messaging.control-service.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discord-messaging.control-service.js","sourceRoot":"","sources":["../../../../../src/_modules/messaging/providers/discord-messaging.control-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CCAP_Monitoring_DataService = void 0;
|
|
4
|
+
const fsm_dynamo_1 = require("@futdevpro/fsm-dynamo");
|
|
5
|
+
const nts_dynamo_1 = require("@futdevpro/nts-dynamo");
|
|
6
|
+
/**
|
|
7
|
+
* Monitoring data-service (singleton).
|
|
8
|
+
* Monitoring event-ek gyűjtése, tárolása és lekérdezése.
|
|
9
|
+
* Egyetlen példány biztosítja, hogy GET /session/:id/events a rögzített eventeket adja (REQ-TECH-004, REQ-SYS-004).
|
|
10
|
+
*/
|
|
11
|
+
class CCAP_Monitoring_DataService extends nts_dynamo_1.DyNTS_SingletonService {
|
|
12
|
+
static getInstance() {
|
|
13
|
+
return CCAP_Monitoring_DataService.getSingletonInstance();
|
|
14
|
+
}
|
|
15
|
+
/** In-memory event tár; később DB-be mentés is. */
|
|
16
|
+
events = [];
|
|
17
|
+
/**
|
|
18
|
+
* Opcionális callback: event rögzítése után hívódik (pl. CCAP Client real-time push).
|
|
19
|
+
* Nincs messaging import, hogy ne legyen körfüggőség.
|
|
20
|
+
*/
|
|
21
|
+
onEventRecorded;
|
|
22
|
+
/**
|
|
23
|
+
* onEventRecorded callback beállítása (bootstrap hívja, Phase 3.09).
|
|
24
|
+
*/
|
|
25
|
+
setOnEventRecorded(callback) {
|
|
26
|
+
this.onEventRecorded = callback;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Monitoring event rögzítése.
|
|
30
|
+
* Minden lépés, kompaktálás, hívás logolásra kerül.
|
|
31
|
+
*/
|
|
32
|
+
recordEvent(params) {
|
|
33
|
+
const event = {
|
|
34
|
+
eventType: params.eventType,
|
|
35
|
+
timestamp: new Date(),
|
|
36
|
+
sessionId: params.sessionId,
|
|
37
|
+
runId: params.runId,
|
|
38
|
+
data: params.data,
|
|
39
|
+
durationMs: params.durationMs,
|
|
40
|
+
inputSize: params.inputSize,
|
|
41
|
+
outputSize: params.outputSize,
|
|
42
|
+
status: params.status,
|
|
43
|
+
};
|
|
44
|
+
this.events.push(event);
|
|
45
|
+
if (this.onEventRecorded) {
|
|
46
|
+
const serialized = {
|
|
47
|
+
eventType: event.eventType,
|
|
48
|
+
timestamp: event.timestamp.toISOString(),
|
|
49
|
+
sessionId: event.sessionId,
|
|
50
|
+
runId: event.runId,
|
|
51
|
+
data: event.data,
|
|
52
|
+
durationMs: event.durationMs,
|
|
53
|
+
inputSize: event.inputSize,
|
|
54
|
+
outputSize: event.outputSize,
|
|
55
|
+
status: event.status,
|
|
56
|
+
};
|
|
57
|
+
this.onEventRecorded({
|
|
58
|
+
sessionId: params.sessionId,
|
|
59
|
+
runId: params.runId,
|
|
60
|
+
event: serialized,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
fsm_dynamo_1.DyFM_Log.testInfo(`CCAP_Monitoring | ${params.eventType}`
|
|
64
|
+
+ ` | session: ${params.sessionId ?? '-'}`
|
|
65
|
+
+ ` | duration: ${params.durationMs ?? '-'}ms`);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Session-hez tartozó event-ek lekérdezése.
|
|
69
|
+
*/
|
|
70
|
+
getEventsBySessionId(sessionId) {
|
|
71
|
+
return this.events.filter((event) => event.sessionId === sessionId);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Run-hoz tartozó event-ek lekérdezése.
|
|
75
|
+
*/
|
|
76
|
+
getEventsByRunId(runId) {
|
|
77
|
+
return this.events.filter((event) => event.runId === runId);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Event-ek lekérdezése típus szerint.
|
|
81
|
+
*/
|
|
82
|
+
getEventsByType(eventType) {
|
|
83
|
+
return this.events.filter((event) => event.eventType === eventType);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Összes event lekérdezése.
|
|
87
|
+
*/
|
|
88
|
+
getAllEvents() {
|
|
89
|
+
return [...this.events];
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Event-ek törlése (pl. archiválás után).
|
|
93
|
+
*/
|
|
94
|
+
clearEvents() {
|
|
95
|
+
this.events = [];
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
exports.CCAP_Monitoring_DataService = CCAP_Monitoring_DataService;
|
|
99
|
+
//# sourceMappingURL=monitoring.data-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monitoring.data-service.js","sourceRoot":"","sources":["../../../../src/_modules/monitoring/monitoring.data-service.ts"],"names":[],"mappings":";;;AAAA,sDAAiD;AACjD,sDAA+D;AAK/D;;;;GAIG;AACH,MAAa,2BAA4B,SAAQ,mCAAsB;IAErE,MAAM,CAAC,WAAW;QAChB,OAAO,2BAA2B,CAAC,oBAAoB,EAAE,CAAC;IAC5D,CAAC;IAED,mDAAmD;IAC3C,MAAM,GAAqC,EAAE,CAAC;IAEtD;;;OAGG;IACK,eAAe,CAIZ;IAEX;;OAEG;IACH,kBAAkB,CAAC,QAIT;QACR,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;IAClC,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,MASX;QACC,MAAM,KAAK,GAAmC;YAC5C,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAExB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,UAAU,GAA4B;gBAC1C,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE;gBACxC,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;aACrB,CAAC;YACF,IAAI,CAAC,eAAe,CAAC;gBACnB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,KAAK,EAAE,UAAU;aAClB,CAAC,CAAC;QACL,CAAC;QAED,qBAAQ,CAAC,QAAQ,CACf,qBAAqB,MAAM,CAAC,SAAS,EAAE;cACrC,eAAe,MAAM,CAAC,SAAS,IAAI,GAAG,EAAE;cACxC,gBAAgB,MAAM,CAAC,UAAU,IAAI,GAAG,IAAI,CAC/C,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,oBAAoB,CAClB,SAAiB;QAEjB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CACvB,CAAC,KAAqC,EAAW,EAAE,CACjD,KAAK,CAAC,SAAS,KAAK,SAAS,CAChC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,gBAAgB,CACd,KAAa;QAEb,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CACvB,CAAC,KAAqC,EAAW,EAAE,CACjD,KAAK,CAAC,KAAK,KAAK,KAAK,CACxB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,eAAe,CACb,SAAoC;QAEpC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CACvB,CAAC,KAAqC,EAAW,EAAE,CACjD,KAAK,CAAC,SAAS,KAAK,SAAS,CAChC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,WAAW;QACT,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;CACF;AArID,kEAqIC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const ccap_monitoring_event_type_enum_1 = require("../../_enums/ccap-monitoring-event.type-enum");
|
|
4
|
+
const monitoring_data_service_1 = require("./monitoring.data-service");
|
|
5
|
+
describe('CCAP_Monitoring_DataService', () => {
|
|
6
|
+
let service;
|
|
7
|
+
const sessionId = 'test-session-monitoring';
|
|
8
|
+
const runId = 'test-run-001';
|
|
9
|
+
beforeEach(() => {
|
|
10
|
+
service = monitoring_data_service_1.CCAP_Monitoring_DataService.getInstance();
|
|
11
|
+
});
|
|
12
|
+
describe('recordEvent with onEventRecorded (Phase 3.09)', () => {
|
|
13
|
+
it('invokes onEventRecorded callback with sessionId, runId and serialized event', () => {
|
|
14
|
+
const onEventRecorded = jasmine.createSpy('onEventRecorded');
|
|
15
|
+
service.setOnEventRecorded(onEventRecorded);
|
|
16
|
+
service.recordEvent({
|
|
17
|
+
eventType: ccap_monitoring_event_type_enum_1.CCAP_MonitoringEvent_Type.step,
|
|
18
|
+
sessionId: sessionId,
|
|
19
|
+
runId: runId,
|
|
20
|
+
data: { step: 'test-step' },
|
|
21
|
+
status: 'completed',
|
|
22
|
+
});
|
|
23
|
+
expect(onEventRecorded).toHaveBeenCalledTimes(1);
|
|
24
|
+
expect(onEventRecorded).toHaveBeenCalledWith({
|
|
25
|
+
sessionId: sessionId,
|
|
26
|
+
runId: runId,
|
|
27
|
+
event: jasmine.objectContaining({
|
|
28
|
+
eventType: ccap_monitoring_event_type_enum_1.CCAP_MonitoringEvent_Type.step,
|
|
29
|
+
sessionId: sessionId,
|
|
30
|
+
runId: runId,
|
|
31
|
+
data: { step: 'test-step' },
|
|
32
|
+
status: 'completed',
|
|
33
|
+
timestamp: jasmine.any(String),
|
|
34
|
+
}),
|
|
35
|
+
});
|
|
36
|
+
const eventArg = onEventRecorded.calls.mostRecent().args[0].event;
|
|
37
|
+
expect(typeof eventArg.timestamp).toBe('string');
|
|
38
|
+
});
|
|
39
|
+
it('does not throw when onEventRecorded is not set', () => {
|
|
40
|
+
service.recordEvent({
|
|
41
|
+
eventType: ccap_monitoring_event_type_enum_1.CCAP_MonitoringEvent_Type.step,
|
|
42
|
+
sessionId: sessionId,
|
|
43
|
+
runId: runId,
|
|
44
|
+
data: {},
|
|
45
|
+
});
|
|
46
|
+
expect(service.getEventsBySessionId(sessionId).length).toBeGreaterThan(0);
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=monitoring.data-service.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monitoring.data-service.spec.js","sourceRoot":"","sources":["../../../../src/_modules/monitoring/monitoring.data-service.spec.ts"],"names":[],"mappings":";;AAAA,kGAAyF;AACzF,uEAAwE;AAExE,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,IAAI,OAAoC,CAAC;IACzC,MAAM,SAAS,GAAW,yBAAyB,CAAC;IACpD,MAAM,KAAK,GAAW,cAAc,CAAC;IAErC,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,GAAG,qDAA2B,CAAC,WAAW,EAAE,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,+CAA+C,EAAE,GAAG,EAAE;QAC7D,EAAE,CAAC,6EAA6E,EAAE,GAAG,EAAE;YACrF,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;YAE7D,OAAO,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;YAC5C,OAAO,CAAC,WAAW,CAAC;gBAClB,SAAS,EAAE,2DAAyB,CAAC,IAAI;gBACzC,SAAS,EAAE,SAAS;gBACpB,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;gBAC3B,MAAM,EAAE,WAAW;aACpB,CAAC,CAAC;YAEH,MAAM,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACjD,MAAM,CAAC,eAAe,CAAC,CAAC,oBAAoB,CAAC;gBAC3C,SAAS,EAAE,SAAS;gBACpB,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,OAAO,CAAC,gBAAgB,CAAC;oBAC9B,SAAS,EAAE,2DAAyB,CAAC,IAAI;oBACzC,SAAS,EAAE,SAAS;oBACpB,KAAK,EAAE,KAAK;oBACZ,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;oBAC3B,MAAM,EAAE,WAAW;oBACnB,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;iBAC/B,CAAC;aACH,CAAC,CAAC;YACH,MAAM,QAAQ,GAA4B,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAC3F,MAAM,CAAC,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,OAAO,CAAC,WAAW,CAAC;gBAClB,SAAS,EAAE,2DAAyB,CAAC,IAAI;gBACzC,SAAS,EAAE,SAAS;gBACpB,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,EAAE;aACT,CAAC,CAAC;YAEH,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CCAP_PathProtection_UtilService = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const fs = tslib_1.__importStar(require("fs"));
|
|
6
|
+
const path = tslib_1.__importStar(require("path"));
|
|
7
|
+
const default_path_util_service_1 = require("../default-path/default-path.util-service");
|
|
8
|
+
/**
|
|
9
|
+
* Path protection util-service.
|
|
10
|
+
* Whitelist: path csak az engedélyezett gyökerek alatt lehet.
|
|
11
|
+
* Default whitelist = default path (Phase 3.13).
|
|
12
|
+
*/
|
|
13
|
+
class CCAP_PathProtection_UtilService {
|
|
14
|
+
/**
|
|
15
|
+
* Alapértelmezett engedélyezett gyökér lista (default path).
|
|
16
|
+
*/
|
|
17
|
+
static getDefaultAllowedRoots() {
|
|
18
|
+
const root = path.normalize(path.resolve(default_path_util_service_1.CCAP_DefaultPath_UtilService.getDefaultPath()));
|
|
19
|
+
return [root];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Path feloldása és ellenőrzése: a path az egyik allowed root alatt van-e.
|
|
23
|
+
* Ha allowedRoots nincs megadva, default path-ot használ.
|
|
24
|
+
*/
|
|
25
|
+
static resolveAndCheck(params) {
|
|
26
|
+
const roots = params.allowedRoots?.length
|
|
27
|
+
? params.allowedRoots.map((r) => path.normalize(path.resolve(r)))
|
|
28
|
+
: CCAP_PathProtection_UtilService.getDefaultAllowedRoots();
|
|
29
|
+
let resolvedPath;
|
|
30
|
+
try {
|
|
31
|
+
resolvedPath = path.normalize(path.resolve(params.baseCwd ?? process.cwd(), params.rawPath));
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return {
|
|
35
|
+
allowed: false,
|
|
36
|
+
error: 'Invalid path',
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
for (const root of roots) {
|
|
40
|
+
const rootNorm = path.normalize(root);
|
|
41
|
+
const allowed = resolvedPath === rootNorm
|
|
42
|
+
|| resolvedPath.startsWith(rootNorm + path.sep);
|
|
43
|
+
if (allowed) {
|
|
44
|
+
return {
|
|
45
|
+
allowed: true,
|
|
46
|
+
resolvedPath: resolvedPath,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
allowed: false,
|
|
52
|
+
resolvedPath: resolvedPath,
|
|
53
|
+
error: 'Path is outside allowed roots',
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Gyors ellenőrzés: path engedélyezett-e (resolveAndCheck wrapper).
|
|
58
|
+
*/
|
|
59
|
+
static isPathAllowed(params) {
|
|
60
|
+
const result = CCAP_PathProtection_UtilService.resolveAndCheck(params);
|
|
61
|
+
return result.allowed;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Fájl olvasás előtti check: path engedélyezett, majd readFileSync.
|
|
65
|
+
* Ha nem engedélyezett, null; egyébként a tartalom.
|
|
66
|
+
*/
|
|
67
|
+
static readFileIfAllowed(params) {
|
|
68
|
+
const result = CCAP_PathProtection_UtilService.resolveAndCheck(params);
|
|
69
|
+
if (!result.allowed || !result.resolvedPath) {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
if (fs.existsSync(result.resolvedPath) && fs.statSync(result.resolvedPath).isFile()) {
|
|
74
|
+
return fs.readFileSync(result.resolvedPath, 'utf-8');
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
// ignore
|
|
79
|
+
}
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
exports.CCAP_PathProtection_UtilService = CCAP_PathProtection_UtilService;
|
|
84
|
+
//# sourceMappingURL=path-protection.util-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-protection.util-service.js","sourceRoot":"","sources":["../../../../src/_modules/path-protection/path-protection.util-service.ts"],"names":[],"mappings":";;;;AAAA,+CAAyB;AACzB,mDAA6B;AAE7B,yFAAyF;AAWzF;;;;GAIG;AACH,MAAa,+BAA+B;IAE1C;;OAEG;IACH,MAAM,CAAC,sBAAsB;QAC3B,MAAM,IAAI,GACR,IAAI,CAAC,SAAS,CACZ,IAAI,CAAC,OAAO,CAAC,wDAA4B,CAAC,cAAc,EAAE,CAAC,CAC5D,CAAC;QAEJ,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,MAItB;QACC,MAAM,KAAK,GACT,MAAM,CAAC,YAAY,EAAE,MAAM;YACzB,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAS,EAAU,EAAE,CAC9C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAChC;YACD,CAAC,CAAC,+BAA+B,CAAC,sBAAsB,EAAE,CAAC;QAE/D,IAAI,YAAoB,CAAC;QAEzB,IAAI,CAAC;YACH,YAAY,GAAG,IAAI,CAAC,SAAS,CAC3B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAC9D,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,cAAc;aACtB,CAAC;QACJ,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC9C,MAAM,OAAO,GACX,YAAY,KAAK,QAAQ;mBACtB,YAAY,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YAElD,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,YAAY,EAAE,YAAY;iBAC3B,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,KAAK;YACd,YAAY,EAAE,YAAY;YAC1B,KAAK,EAAE,+BAA+B;SACvC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,MAIpB;QACC,MAAM,MAAM,GACV,+BAA+B,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAE1D,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,MAIxB;QACC,MAAM,MAAM,GACV,+BAA+B,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAE1D,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC;YACH,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;gBACpF,OAAO,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAxGD,0EAwGC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const path = tslib_1.__importStar(require("path"));
|
|
5
|
+
const path_protection_util_service_1 = require("./path-protection.util-service");
|
|
6
|
+
describe('CCAP_PathProtection_UtilService', () => {
|
|
7
|
+
const allowedRoot = path.resolve(path.sep, 'allowed', 'root');
|
|
8
|
+
describe('resolveAndCheck', () => {
|
|
9
|
+
it('returns allowed when resolved path is under allowed root', () => {
|
|
10
|
+
const result = path_protection_util_service_1.CCAP_PathProtection_UtilService.resolveAndCheck({
|
|
11
|
+
rawPath: path.join('sub', 'file.txt'),
|
|
12
|
+
allowedRoots: [allowedRoot],
|
|
13
|
+
baseCwd: allowedRoot,
|
|
14
|
+
});
|
|
15
|
+
expect(result.allowed).toBe(true);
|
|
16
|
+
expect(result.resolvedPath).toBeDefined();
|
|
17
|
+
expect(result.resolvedPath).toContain('allowed');
|
|
18
|
+
expect(result.error).toBeUndefined();
|
|
19
|
+
});
|
|
20
|
+
it('returns allowed when resolved path equals root', () => {
|
|
21
|
+
const result = path_protection_util_service_1.CCAP_PathProtection_UtilService.resolveAndCheck({
|
|
22
|
+
rawPath: allowedRoot,
|
|
23
|
+
allowedRoots: [allowedRoot],
|
|
24
|
+
});
|
|
25
|
+
expect(result.allowed).toBe(true);
|
|
26
|
+
expect(result.resolvedPath).toBeDefined();
|
|
27
|
+
});
|
|
28
|
+
it('returns not allowed when path is outside allowed roots', () => {
|
|
29
|
+
const result = path_protection_util_service_1.CCAP_PathProtection_UtilService.resolveAndCheck({
|
|
30
|
+
rawPath: path.resolve(path.sep, 'other', 'file.txt'),
|
|
31
|
+
allowedRoots: [allowedRoot],
|
|
32
|
+
});
|
|
33
|
+
expect(result.allowed).toBe(false);
|
|
34
|
+
expect(result.error).toBe('Path is outside allowed roots');
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
describe('isPathAllowed', () => {
|
|
38
|
+
it('returns true when resolveAndCheck allows', () => {
|
|
39
|
+
const allowed = path_protection_util_service_1.CCAP_PathProtection_UtilService.isPathAllowed({
|
|
40
|
+
rawPath: 'file.txt',
|
|
41
|
+
allowedRoots: [allowedRoot],
|
|
42
|
+
baseCwd: allowedRoot,
|
|
43
|
+
});
|
|
44
|
+
expect(allowed).toBe(true);
|
|
45
|
+
});
|
|
46
|
+
it('returns false when path is outside roots', () => {
|
|
47
|
+
const allowed = path_protection_util_service_1.CCAP_PathProtection_UtilService.isPathAllowed({
|
|
48
|
+
rawPath: path.resolve(path.sep, 'outside'),
|
|
49
|
+
allowedRoots: [allowedRoot],
|
|
50
|
+
});
|
|
51
|
+
expect(allowed).toBe(false);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
//# sourceMappingURL=path-protection.util-service.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-protection.util-service.spec.js","sourceRoot":"","sources":["../../../../src/_modules/path-protection/path-protection.util-service.spec.ts"],"names":[],"mappings":";;;AAAA,mDAA6B;AAE7B,iFAAiF;AAEjF,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,MAAM,WAAW,GAAW,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAEtE,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;YAClE,MAAM,MAAM,GAAG,8DAA+B,CAAC,eAAe,CAAC;gBAC7D,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC;gBACrC,YAAY,EAAE,CAAC,WAAW,CAAC;gBAC3B,OAAO,EAAE,WAAW;aACrB,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;YAC1C,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YACjD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,MAAM,MAAM,GAAG,8DAA+B,CAAC,eAAe,CAAC;gBAC7D,OAAO,EAAE,WAAW;gBACpB,YAAY,EAAE,CAAC,WAAW,CAAC;aAC5B,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;YAChE,MAAM,MAAM,GAAG,8DAA+B,CAAC,eAAe,CAAC;gBAC7D,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC;gBACpD,YAAY,EAAE,CAAC,WAAW,CAAC;aAC5B,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,OAAO,GAAY,8DAA+B,CAAC,aAAa,CAAC;gBACrE,OAAO,EAAE,UAAU;gBACnB,YAAY,EAAE,CAAC,WAAW,CAAC;gBAC3B,OAAO,EAAE,WAAW;aACrB,CAAC,CAAC;YAEH,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,OAAO,GAAY,8DAA+B,CAAC,aAAa,CAAC;gBACrE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC;gBAC1C,YAAY,EAAE,CAAC,WAAW,CAAC;aAC5B,CAAC,CAAC;YAEH,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CCAP_SecretsVault_DataService = void 0;
|
|
4
|
+
const crypto_1 = require("crypto");
|
|
5
|
+
const fsm_dynamo_1 = require("@futdevpro/fsm-dynamo");
|
|
6
|
+
const nts_dynamo_1 = require("@futdevpro/nts-dynamo");
|
|
7
|
+
const ccap_secret_data_model_1 = require("../../_models/data-models/ccap-secret.data-model");
|
|
8
|
+
/** AES-256-GCM IV hossz (byte). */
|
|
9
|
+
const IV_LENGTH = 12;
|
|
10
|
+
/** GCM auth tag hossz (byte). */
|
|
11
|
+
const AUTH_TAG_LENGTH = 16;
|
|
12
|
+
/** Master key byte hossz. */
|
|
13
|
+
const KEY_LENGTH = 32;
|
|
14
|
+
/** Env var a vault master kulcshoz (32 byte hex vagy plain; hash-elve használjuk). */
|
|
15
|
+
const VAULT_MASTER_KEY_ENV = 'CCAP_VAULT_MASTER_KEY';
|
|
16
|
+
/**
|
|
17
|
+
* Secrets vault data-service.
|
|
18
|
+
* Titkok tárolása titkosítva (at rest); get/set/delete kulcs alapján.
|
|
19
|
+
* Egyetlen forrás az API kulcsoknak, Discord tokennek stb.
|
|
20
|
+
*/
|
|
21
|
+
class CCAP_SecretsVault_DataService extends nts_dynamo_1.DyNTS_DataService {
|
|
22
|
+
/** Cache-elt master key buffer (null ha nincs env). */
|
|
23
|
+
masterKeyBuffer = null;
|
|
24
|
+
constructor(set) {
|
|
25
|
+
super(new ccap_secret_data_model_1.CCAP_Secret(set?.data), ccap_secret_data_model_1.ccapSecret_dataParams, set.issuer);
|
|
26
|
+
this.ensureMasterKey();
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Master key kiolvasása env-ből és cache-elése.
|
|
30
|
+
* CCAP_VAULT_MASTER_KEY: 64 hex karakter = 32 byte, vagy tetszőleges string (scrypt-tal hash-elve).
|
|
31
|
+
*/
|
|
32
|
+
ensureMasterKey() {
|
|
33
|
+
if (this.masterKeyBuffer !== null) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const raw = process.env[VAULT_MASTER_KEY_ENV];
|
|
37
|
+
if (!raw || raw.length === 0) {
|
|
38
|
+
this.masterKeyBuffer = null;
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
// 64 hex karakter → 32 byte közvetlenül
|
|
42
|
+
if (/^[0-9a-fA-F]{64}$/.test(raw)) {
|
|
43
|
+
this.masterKeyBuffer = Buffer.from(raw, 'hex');
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
// Egyéb esetben salt nélküli scrypt (determinisztikus) 32 byte
|
|
47
|
+
this.masterKeyBuffer = (0, crypto_1.scryptSync)(raw, 'ccap-vault-salt', KEY_LENGTH);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Vault használható-e (master key beállítva).
|
|
51
|
+
*/
|
|
52
|
+
isVaultAvailable() {
|
|
53
|
+
return this.masterKeyBuffer !== null;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Plaintext titkosítása AES-256-GCM-mel.
|
|
57
|
+
* Kimenet: base64(iv + authTag + ciphertext).
|
|
58
|
+
*/
|
|
59
|
+
encrypt(plaintext) {
|
|
60
|
+
const key = this.masterKeyBuffer;
|
|
61
|
+
if (!key || key.length !== KEY_LENGTH) {
|
|
62
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
63
|
+
message: 'Vault master key not set (CCAP_VAULT_MASTER_KEY)',
|
|
64
|
+
errorCode: 'CCAP-VDS-ENC0',
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
const iv = (0, crypto_1.randomBytes)(IV_LENGTH);
|
|
68
|
+
const cipher = (0, crypto_1.createCipheriv)('aes-256-gcm', key, iv);
|
|
69
|
+
const enc = Buffer.concat([
|
|
70
|
+
cipher.update(plaintext, 'utf8'),
|
|
71
|
+
cipher.final(),
|
|
72
|
+
]);
|
|
73
|
+
const authTag = cipher.getAuthTag();
|
|
74
|
+
return Buffer.concat([iv, authTag, enc]).toString('base64');
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Titkosított érték dekódolása.
|
|
78
|
+
* Bemenet: base64(iv + authTag + ciphertext).
|
|
79
|
+
*/
|
|
80
|
+
decrypt(encoded) {
|
|
81
|
+
const key = this.masterKeyBuffer;
|
|
82
|
+
if (!key || key.length !== KEY_LENGTH) {
|
|
83
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
84
|
+
message: 'Vault master key not set (CCAP_VAULT_MASTER_KEY)',
|
|
85
|
+
errorCode: 'CCAP-VDS-DEC0',
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
const buf = Buffer.from(encoded, 'base64');
|
|
89
|
+
if (buf.length < IV_LENGTH + AUTH_TAG_LENGTH) {
|
|
90
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
91
|
+
message: 'Invalid encrypted payload',
|
|
92
|
+
errorCode: 'CCAP-VDS-DEC1',
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
const iv = buf.subarray(0, IV_LENGTH);
|
|
96
|
+
const authTag = buf.subarray(IV_LENGTH, IV_LENGTH + AUTH_TAG_LENGTH);
|
|
97
|
+
const ciphertext = buf.subarray(IV_LENGTH + AUTH_TAG_LENGTH);
|
|
98
|
+
const decipher = (0, crypto_1.createDecipheriv)('aes-256-gcm', key, iv);
|
|
99
|
+
decipher.setAuthTag(authTag);
|
|
100
|
+
return decipher.update(ciphertext).toString('utf8') + decipher.final('utf8');
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Titok lekérése kulcs alapján; dekódolt érték vagy null ha nincs / vault nincs feloldva.
|
|
104
|
+
*/
|
|
105
|
+
async getSecret(key) {
|
|
106
|
+
try {
|
|
107
|
+
if (!this.isVaultAvailable()) {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
const list = await this.findDataList({ key: key });
|
|
111
|
+
const doc = list[0];
|
|
112
|
+
if (!doc || !doc.encryptedValue) {
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
return this.decrypt(doc.encryptedValue);
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
fsm_dynamo_1.DyFM_Log.error(`CCAP_SecretsVault | getSecret failed: ${key}`, error);
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Titok mentése (felülírja ha létezik).
|
|
124
|
+
*/
|
|
125
|
+
async setSecret(params) {
|
|
126
|
+
try {
|
|
127
|
+
if (!this.isVaultAvailable()) {
|
|
128
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
129
|
+
message: 'Vault master key not set; cannot store secret',
|
|
130
|
+
errorCode: 'CCAP-VDS-SET0',
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
const list = await this.findDataList({ key: params.key });
|
|
134
|
+
const existing = list[0];
|
|
135
|
+
const encrypted = this.encrypt(params.value);
|
|
136
|
+
const now = new Date();
|
|
137
|
+
if (existing && existing._id) {
|
|
138
|
+
this.data = new ccap_secret_data_model_1.CCAP_Secret({
|
|
139
|
+
_id: existing._id,
|
|
140
|
+
key: params.key,
|
|
141
|
+
encryptedValue: encrypted,
|
|
142
|
+
metadata: params.metadata ?? existing.metadata,
|
|
143
|
+
updatedAt: now,
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
this.data = new ccap_secret_data_model_1.CCAP_Secret({
|
|
148
|
+
key: params.key,
|
|
149
|
+
encryptedValue: encrypted,
|
|
150
|
+
metadata: params.metadata,
|
|
151
|
+
updatedAt: now,
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
await this.saveData();
|
|
155
|
+
fsm_dynamo_1.DyFM_Log.testInfo(`CCAP_SecretsVault | Secret set: ${params.key}`);
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
159
|
+
...this.getDefaultErrorSettings('setSecret', error),
|
|
160
|
+
errorCode: 'CCAP-VDS-SET1',
|
|
161
|
+
message: 'Failed to set secret',
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Titok törlése kulcs alapján.
|
|
167
|
+
*/
|
|
168
|
+
async deleteSecret(key) {
|
|
169
|
+
try {
|
|
170
|
+
const list = await this.findDataList({ key: key });
|
|
171
|
+
const doc = list[0];
|
|
172
|
+
if (!doc || !doc._id) {
|
|
173
|
+
return false;
|
|
174
|
+
}
|
|
175
|
+
await this.deleteData(doc._id);
|
|
176
|
+
fsm_dynamo_1.DyFM_Log.testInfo(`CCAP_SecretsVault | Secret deleted: ${key}`);
|
|
177
|
+
return true;
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
fsm_dynamo_1.DyFM_Log.error(`CCAP_SecretsVault | deleteSecret failed: ${key}`, error);
|
|
181
|
+
return false;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
exports.CCAP_SecretsVault_DataService = CCAP_SecretsVault_DataService;
|
|
186
|
+
//# sourceMappingURL=secrets-vault.data-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets-vault.data-service.js","sourceRoot":"","sources":["../../../../src/_modules/secrets-vault/secrets-vault.data-service.ts"],"names":[],"mappings":"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"}
|