@memberjunction/ng-core-entity-forms 5.43.0 → 5.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/model-prediction.logic.test.d.ts +2 -0
- package/dist/__tests__/model-prediction.logic.test.d.ts.map +1 -0
- package/dist/__tests__/model-prediction.logic.test.js +140 -0
- package/dist/__tests__/model-prediction.logic.test.js.map +1 -0
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js +79 -105
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js +7 -10
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/add-action-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/add-action-dialog.component.js +46 -51
- package/dist/lib/custom/AIAgents/add-action-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +2 -0
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js +300 -378
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +22 -29
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +15 -17
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +27 -34
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts +11 -0
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +48 -47
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +438 -454
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js +48 -51
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +253 -282
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.js +24 -33
- package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.js +263 -311
- package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.d.ts +6 -0
- package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.js +475 -493
- package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
- package/dist/lib/custom/Lists/list-form.component.js +122 -173
- package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.js +190 -248
- package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-run-dialog.component.js +19 -23
- package/dist/lib/custom/Queries/query-run-dialog.component.js.map +1 -1
- package/dist/lib/custom/SearchScopes/searchscopeprovider-form.component.js +23 -24
- package/dist/lib/custom/SearchScopes/searchscopeprovider-form.component.js.map +1 -1
- package/dist/lib/custom/Templates/template-param-dialog.component.js +14 -23
- package/dist/lib/custom/Templates/template-param-dialog.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.js +100 -130
- package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-run-form.component.js +187 -205
- package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-suite-form.component.d.ts +8 -0
- package/dist/lib/custom/Tests/test-suite-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-suite-form.component.js +412 -489
- package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-suite-run-form.component.js +100 -126
- package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +166 -184
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js +42 -61
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +8 -17
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +0 -2
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +183 -188
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.d.ts +108 -0
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.js +665 -0
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.d.ts +94 -0
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.js +257 -0
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/constellation.component.d.ts +38 -0
- package/dist/lib/custom/ai-agent-run/flow/constellation.component.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/constellation.component.js +200 -0
- package/dist/lib/custom/ai-agent-run/flow/constellation.component.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.d.ts +44 -0
- package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.js +180 -0
- package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.d.ts +12 -0
- package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.js +46 -0
- package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/flowchart.component.d.ts +64 -0
- package/dist/lib/custom/ai-agent-run/flow/flowchart.component.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/flowchart.component.js +267 -0
- package/dist/lib/custom/ai-agent-run/flow/flowchart.component.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/pan-zoom.d.ts +53 -0
- package/dist/lib/custom/ai-agent-run/flow/pan-zoom.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/pan-zoom.js +111 -0
- package/dist/lib/custom/ai-agent-run/flow/pan-zoom.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.d.ts +42 -0
- package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.js +193 -0
- package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.js.map +1 -0
- package/dist/lib/custom/custom-forms.module.d.ts +58 -51
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +52 -13
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts +2 -0
- package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/shared/entity-selector-dialog.component.js +25 -25
- package/dist/lib/custom/shared/entity-selector-dialog.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +280 -216
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentChannel/mjaiagentchannel.form.component.js +25 -21
- package/dist/lib/generated/Entities/MJAIAgentChannel/mjaiagentchannel.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js +68 -14
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.js +44 -32
- package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentSkill/mjaiagentskill.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIAgentSkill/mjaiagentskill.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentSkill/mjaiagentskill.form.component.js +66 -0
- package/dist/lib/generated/Entities/MJAIAgentSkill/mjaiagentskill.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js +55 -19
- package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js +28 -10
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAISkill/mjaiskill.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAISkill/mjaiskill.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAISkill/mjaiskill.form.component.js +167 -0
- package/dist/lib/generated/Entities/MJAISkill/mjaiskill.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAISkillAction/mjaiskillaction.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAISkillAction/mjaiskillaction.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAISkillAction/mjaiskillaction.form.component.js +64 -0
- package/dist/lib/generated/Entities/MJAISkillAction/mjaiskillaction.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAISkillPermission/mjaiskillpermission.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAISkillPermission/mjaiskillpermission.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAISkillPermission/mjaiskillpermission.form.component.js +82 -0
- package/dist/lib/generated/Entities/MJAISkillPermission/mjaiskillpermission.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAISkillSubAgent/mjaiskillsubagent.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAISkillSubAgent/mjaiskillsubagent.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAISkillSubAgent/mjaiskillsubagent.form.component.js +64 -0
- package/dist/lib/generated/Entities/MJAISkillSubAgent/mjaiskillsubagent.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js +35 -17
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJApplication/mjapplication.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJApplication/mjapplication.form.component.js +59 -51
- package/dist/lib/generated/Entities/MJApplication/mjapplication.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCollection/mjcollection.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJCollection/mjcollection.form.component.js +25 -7
- package/dist/lib/generated/Entities/MJCollection/mjcollection.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCollectionArtifact/mjcollectionartifact.form.component.js +11 -7
- package/dist/lib/generated/Entities/MJCollectionArtifact/mjcollectionartifact.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js +56 -46
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js +73 -59
- package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJDuplicateRunDetailMatch/mjduplicaterundetailmatch.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJDuplicateRunDetailMatch/mjduplicaterundetailmatch.form.component.js +24 -4
- package/dist/lib/generated/Entities/MJDuplicateRunDetailMatch/mjduplicaterundetailmatch.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +137 -87
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityDocument/mjentitydocument.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntityDocument/mjentitydocument.form.component.js +47 -29
- package/dist/lib/generated/Entities/MJEntityDocument/mjentitydocument.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJExperiment/mjexperiment.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJExperiment/mjexperiment.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJExperiment/mjexperiment.form.component.js +99 -0
- package/dist/lib/generated/Entities/MJExperiment/mjexperiment.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJExperimentSession/mjexperimentsession.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJExperimentSession/mjexperimentsession.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJExperimentSession/mjexperimentsession.form.component.js +101 -0
- package/dist/lib/generated/Entities/MJExperimentSession/mjexperimentsession.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJExperimentSessionIteration/mjexperimentsessioniteration.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJExperimentSessionIteration/mjexperimentsessioniteration.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJExperimentSessionIteration/mjexperimentsessioniteration.form.component.js +115 -0
- package/dist/lib/generated/Entities/MJExperimentSessionIteration/mjexperimentsessioniteration.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJFile/mjfile.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js +63 -9
- package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.js +32 -14
- package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMLAlgorithm/mjmlalgorithm.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLAlgorithm/mjmlalgorithm.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLAlgorithm/mjmlalgorithm.form.component.js +161 -0
- package/dist/lib/generated/Entities/MJMLAlgorithm/mjmlalgorithm.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMLAlgorithmUseCase/mjmlalgorithmusecase.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLAlgorithmUseCase/mjmlalgorithmusecase.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLAlgorithmUseCase/mjmlalgorithmusecase.form.component.js +89 -0
- package/dist/lib/generated/Entities/MJMLAlgorithmUseCase/mjmlalgorithmusecase.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMLAlgorithmUseCaseRanking/mjmlalgorithmusecaseranking.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLAlgorithmUseCaseRanking/mjmlalgorithmusecaseranking.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLAlgorithmUseCaseRanking/mjmlalgorithmusecaseranking.form.component.js +76 -0
- package/dist/lib/generated/Entities/MJMLAlgorithmUseCaseRanking/mjmlalgorithmusecaseranking.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.js +141 -0
- package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMLModelScoringBinding/mjmlmodelscoringbinding.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLModelScoringBinding/mjmlmodelscoringbinding.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLModelScoringBinding/mjmlmodelscoringbinding.form.component.js +88 -0
- package/dist/lib/generated/Entities/MJMLModelScoringBinding/mjmlmodelscoringbinding.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.js +143 -0
- package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.js +110 -0
- package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJOpenApp/mjopenapp.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJOpenApp/mjopenapp.form.component.js +54 -24
- package/dist/lib/generated/Entities/MJOpenApp/mjopenapp.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js +24 -6
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRole/mjrole.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJRole/mjrole.form.component.js +36 -18
- package/dist/lib/generated/Entities/MJRole/mjrole.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJSchemaInfo/mjschemainfo.form.component.js +8 -6
- package/dist/lib/generated/Entities/MJSchemaInfo/mjschemainfo.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJScopedPromptPart/mjscopedpromptpart.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJScopedPromptPart/mjscopedpromptpart.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJScopedPromptPart/mjscopedpromptpart.form.component.js +78 -0
- package/dist/lib/generated/Entities/MJScopedPromptPart/mjscopedpromptpart.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +145 -109
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +356 -335
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +304 -226
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/dist/lib/panels/ai-agents/agent-realtime.panel.js +44 -44
- package/dist/lib/panels/ai-agents/agent-realtime.panel.js.map +1 -1
- package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.d.ts +43 -0
- package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.d.ts.map +1 -0
- package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.js +240 -0
- package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.js.map +1 -0
- package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts +69 -0
- package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts.map +1 -0
- package/dist/lib/panels/model-predictions/model-prediction.logic.js +130 -0
- package/dist/lib/panels/model-predictions/model-prediction.logic.js.map +1 -0
- package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts +83 -0
- package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts.map +1 -0
- package/dist/lib/panels/model-predictions/model-prediction.panel.js +293 -0
- package/dist/lib/panels/model-predictions/model-prediction.panel.js.map +1 -0
- package/package.json +38 -37
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.d.ts +0 -82
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.d.ts.map +0 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js +0 -1033
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js.map +0 -1
|
@@ -10,29 +10,29 @@ import { RegisterClassEx, UUIDsEqual } from '@memberjunction/global';
|
|
|
10
10
|
import { BaseFormPanel } from '@memberjunction/ng-base-forms';
|
|
11
11
|
import { SharedService } from '@memberjunction/ng-shared';
|
|
12
12
|
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "@memberjunction/ng-
|
|
14
|
-
import * as i2 from "@memberjunction/ng-
|
|
13
|
+
import * as i1 from "@memberjunction/ng-ui-components";
|
|
14
|
+
import * as i2 from "@memberjunction/ng-base-forms";
|
|
15
|
+
import * as i3 from "@memberjunction/ng-shared-generic";
|
|
15
16
|
const _forTrack0 = ($index, $item) => $item.ID;
|
|
16
17
|
function AgentRealtimePanel_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
17
18
|
i0.ɵɵelement(0, "mj-loading", 1);
|
|
18
19
|
} }
|
|
19
20
|
function AgentRealtimePanel_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
20
|
-
i0.ɵɵelementStart(0, "
|
|
21
|
-
i0.ɵɵ
|
|
22
|
-
i0.ɵɵtext(2);
|
|
21
|
+
i0.ɵɵelementStart(0, "mj-alert", 2);
|
|
22
|
+
i0.ɵɵtext(1);
|
|
23
23
|
i0.ɵɵelementEnd();
|
|
24
24
|
} if (rf & 2) {
|
|
25
25
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
26
|
-
i0.ɵɵadvance(
|
|
27
|
-
i0.ɵɵ
|
|
26
|
+
i0.ɵɵadvance();
|
|
27
|
+
i0.ɵɵtextInterpolate(ctx_r0.LoadError);
|
|
28
28
|
} }
|
|
29
29
|
function AgentRealtimePanel_Conditional_3_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
30
|
-
i0.ɵɵelementStart(0, "div",
|
|
30
|
+
i0.ɵɵelementStart(0, "div", 8);
|
|
31
31
|
i0.ɵɵtext(1, "No co-agent pairings reference this agent.");
|
|
32
32
|
i0.ɵɵelementEnd();
|
|
33
33
|
} }
|
|
34
34
|
function AgentRealtimePanel_Conditional_3_Conditional_10_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
35
|
-
i0.ɵɵelementStart(0, "span",
|
|
35
|
+
i0.ɵɵelementStart(0, "span", 20);
|
|
36
36
|
i0.ɵɵtext(1, "voices");
|
|
37
37
|
i0.ɵɵelementEnd();
|
|
38
38
|
i0.ɵɵtext(2);
|
|
@@ -43,7 +43,7 @@ function AgentRealtimePanel_Conditional_3_Conditional_10_For_2_Conditional_6_Tem
|
|
|
43
43
|
i0.ɵɵtextInterpolate1(" ", ctx_r0.OtherAgentName(p_r3), " ");
|
|
44
44
|
} }
|
|
45
45
|
function AgentRealtimePanel_Conditional_3_Conditional_10_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
46
|
-
i0.ɵɵelementStart(0, "span",
|
|
46
|
+
i0.ɵɵelementStart(0, "span", 20);
|
|
47
47
|
i0.ɵɵtext(1, "voiced by");
|
|
48
48
|
i0.ɵɵelementEnd();
|
|
49
49
|
i0.ɵɵtext(2);
|
|
@@ -55,26 +55,26 @@ function AgentRealtimePanel_Conditional_3_Conditional_10_For_2_Conditional_7_Tem
|
|
|
55
55
|
} }
|
|
56
56
|
function AgentRealtimePanel_Conditional_3_Conditional_10_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
57
57
|
i0.ɵɵtext(0, " \u00B7 ");
|
|
58
|
-
i0.ɵɵelementStart(1, "span",
|
|
58
|
+
i0.ɵɵelementStart(1, "span", 21);
|
|
59
59
|
i0.ɵɵtext(2, "default");
|
|
60
60
|
i0.ɵɵelementEnd();
|
|
61
61
|
} }
|
|
62
62
|
function AgentRealtimePanel_Conditional_3_Conditional_10_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
63
63
|
const _r2 = i0.ɵɵgetCurrentView();
|
|
64
|
-
i0.ɵɵelementStart(0, "button",
|
|
64
|
+
i0.ɵɵelementStart(0, "button", 14);
|
|
65
65
|
i0.ɵɵlistener("click", function AgentRealtimePanel_Conditional_3_Conditional_10_For_2_Template_button_click_0_listener() { const p_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.OpenPairing(p_r3)); });
|
|
66
|
-
i0.ɵɵelementStart(1, "span",
|
|
66
|
+
i0.ɵɵelementStart(1, "span", 15);
|
|
67
67
|
i0.ɵɵelement(2, "i");
|
|
68
68
|
i0.ɵɵelementEnd();
|
|
69
|
-
i0.ɵɵelementStart(3, "span",
|
|
69
|
+
i0.ɵɵelementStart(3, "span", 16)(4, "span", 17);
|
|
70
70
|
i0.ɵɵtext(5);
|
|
71
71
|
i0.ɵɵconditionalCreate(6, AgentRealtimePanel_Conditional_3_Conditional_10_For_2_Conditional_6_Template, 3, 1)(7, AgentRealtimePanel_Conditional_3_Conditional_10_For_2_Conditional_7_Template, 3, 1);
|
|
72
72
|
i0.ɵɵelementEnd();
|
|
73
|
-
i0.ɵɵelementStart(8, "span",
|
|
73
|
+
i0.ɵɵelementStart(8, "span", 18);
|
|
74
74
|
i0.ɵɵtext(9);
|
|
75
75
|
i0.ɵɵconditionalCreate(10, AgentRealtimePanel_Conditional_3_Conditional_10_For_2_Conditional_10_Template, 3, 0);
|
|
76
76
|
i0.ɵɵelementEnd()();
|
|
77
|
-
i0.ɵɵelementStart(11, "span",
|
|
77
|
+
i0.ɵɵelementStart(11, "span", 19);
|
|
78
78
|
i0.ɵɵtext(12);
|
|
79
79
|
i0.ɵɵelementEnd()();
|
|
80
80
|
} if (rf & 2) {
|
|
@@ -96,8 +96,8 @@ function AgentRealtimePanel_Conditional_3_Conditional_10_For_2_Template(rf, ctx)
|
|
|
96
96
|
i0.ɵɵtextInterpolate(p_r3.Status);
|
|
97
97
|
} }
|
|
98
98
|
function AgentRealtimePanel_Conditional_3_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
99
|
-
i0.ɵɵelementStart(0, "div",
|
|
100
|
-
i0.ɵɵrepeaterCreate(1, AgentRealtimePanel_Conditional_3_Conditional_10_For_2_Template, 13, 10, "button",
|
|
99
|
+
i0.ɵɵelementStart(0, "div", 9);
|
|
100
|
+
i0.ɵɵrepeaterCreate(1, AgentRealtimePanel_Conditional_3_Conditional_10_For_2_Template, 13, 10, "button", 13, _forTrack0);
|
|
101
101
|
i0.ɵɵelementEnd();
|
|
102
102
|
} if (rf & 2) {
|
|
103
103
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
@@ -105,24 +105,24 @@ function AgentRealtimePanel_Conditional_3_Conditional_10_Template(rf, ctx) { if
|
|
|
105
105
|
i0.ɵɵrepeater(ctx_r0.Pairings);
|
|
106
106
|
} }
|
|
107
107
|
function AgentRealtimePanel_Conditional_3_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
108
|
-
i0.ɵɵelementStart(0, "div",
|
|
108
|
+
i0.ɵɵelementStart(0, "div", 8);
|
|
109
109
|
i0.ɵɵtext(1, "No bridge identities provisioned for this agent.");
|
|
110
110
|
i0.ɵɵelementEnd();
|
|
111
111
|
} }
|
|
112
112
|
function AgentRealtimePanel_Conditional_3_Conditional_19_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
113
113
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
114
|
-
i0.ɵɵelementStart(0, "button",
|
|
114
|
+
i0.ɵɵelementStart(0, "button", 14);
|
|
115
115
|
i0.ɵɵlistener("click", function AgentRealtimePanel_Conditional_3_Conditional_19_For_2_Template_button_click_0_listener() { const i_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.OpenIdentity(i_r5)); });
|
|
116
|
-
i0.ɵɵelementStart(1, "span",
|
|
116
|
+
i0.ɵɵelementStart(1, "span", 15);
|
|
117
117
|
i0.ɵɵelement(2, "i");
|
|
118
118
|
i0.ɵɵelementEnd();
|
|
119
|
-
i0.ɵɵelementStart(3, "span",
|
|
119
|
+
i0.ɵɵelementStart(3, "span", 16)(4, "span", 17);
|
|
120
120
|
i0.ɵɵtext(5);
|
|
121
121
|
i0.ɵɵelementEnd();
|
|
122
|
-
i0.ɵɵelementStart(6, "span",
|
|
122
|
+
i0.ɵɵelementStart(6, "span", 18);
|
|
123
123
|
i0.ɵɵtext(7);
|
|
124
124
|
i0.ɵɵelementEnd()();
|
|
125
|
-
i0.ɵɵelementStart(8, "span",
|
|
125
|
+
i0.ɵɵelementStart(8, "span", 19);
|
|
126
126
|
i0.ɵɵtext(9);
|
|
127
127
|
i0.ɵɵelementEnd()();
|
|
128
128
|
} if (rf & 2) {
|
|
@@ -140,8 +140,8 @@ function AgentRealtimePanel_Conditional_3_Conditional_19_For_2_Template(rf, ctx)
|
|
|
140
140
|
i0.ɵɵtextInterpolate(i_r5.IsActive ? "Active" : "Inactive");
|
|
141
141
|
} }
|
|
142
142
|
function AgentRealtimePanel_Conditional_3_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
143
|
-
i0.ɵɵelementStart(0, "div",
|
|
144
|
-
i0.ɵɵrepeaterCreate(1, AgentRealtimePanel_Conditional_3_Conditional_19_For_2_Template, 10, 9, "button",
|
|
143
|
+
i0.ɵɵelementStart(0, "div", 9);
|
|
144
|
+
i0.ɵɵrepeaterCreate(1, AgentRealtimePanel_Conditional_3_Conditional_19_For_2_Template, 10, 9, "button", 13, _forTrack0);
|
|
145
145
|
i0.ɵɵelementEnd();
|
|
146
146
|
} if (rf & 2) {
|
|
147
147
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
@@ -149,7 +149,7 @@ function AgentRealtimePanel_Conditional_3_Conditional_19_Template(rf, ctx) { if
|
|
|
149
149
|
i0.ɵɵrepeater(ctx_r0.Identities);
|
|
150
150
|
} }
|
|
151
151
|
function AgentRealtimePanel_Conditional_3_Conditional_25_Template(rf, ctx) { if (rf & 1) {
|
|
152
|
-
i0.ɵɵelementStart(0, "pre",
|
|
152
|
+
i0.ɵɵelementStart(0, "pre", 12);
|
|
153
153
|
i0.ɵɵtext(1);
|
|
154
154
|
i0.ɵɵelementEnd();
|
|
155
155
|
} if (rf & 2) {
|
|
@@ -158,40 +158,40 @@ function AgentRealtimePanel_Conditional_3_Conditional_25_Template(rf, ctx) { if
|
|
|
158
158
|
i0.ɵɵtextInterpolate(ctx_r0.PrettyTypeConfiguration);
|
|
159
159
|
} }
|
|
160
160
|
function AgentRealtimePanel_Conditional_3_Conditional_26_Template(rf, ctx) { if (rf & 1) {
|
|
161
|
-
i0.ɵɵelementStart(0, "div",
|
|
161
|
+
i0.ɵɵelementStart(0, "div", 8);
|
|
162
162
|
i0.ɵɵtext(1, "No type configuration set \u2014 this agent uses its type's defaults.");
|
|
163
163
|
i0.ɵɵelementEnd();
|
|
164
164
|
} }
|
|
165
165
|
function AgentRealtimePanel_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
166
|
-
i0.ɵɵelementStart(0, "p",
|
|
166
|
+
i0.ɵɵelementStart(0, "p", 3);
|
|
167
167
|
i0.ɵɵtext(1, " A one-place summary of this agent's realtime / bridge setup \u2014 its co-agent pairings, its type-level realtime configuration, and the bridge identities that route inbound calls and invites to it. ");
|
|
168
168
|
i0.ɵɵelementEnd();
|
|
169
|
-
i0.ɵɵelementStart(2, "div",
|
|
170
|
-
i0.ɵɵelement(4, "i",
|
|
169
|
+
i0.ɵɵelementStart(2, "div", 4)(3, "div", 5);
|
|
170
|
+
i0.ɵɵelement(4, "i", 6);
|
|
171
171
|
i0.ɵɵelementStart(5, "span");
|
|
172
172
|
i0.ɵɵtext(6, "Co-agent pairings");
|
|
173
173
|
i0.ɵɵelementEnd();
|
|
174
|
-
i0.ɵɵelementStart(7, "span",
|
|
174
|
+
i0.ɵɵelementStart(7, "span", 7);
|
|
175
175
|
i0.ɵɵtext(8);
|
|
176
176
|
i0.ɵɵelementEnd()();
|
|
177
|
-
i0.ɵɵconditionalCreate(9, AgentRealtimePanel_Conditional_3_Conditional_9_Template, 2, 0, "div",
|
|
177
|
+
i0.ɵɵconditionalCreate(9, AgentRealtimePanel_Conditional_3_Conditional_9_Template, 2, 0, "div", 8)(10, AgentRealtimePanel_Conditional_3_Conditional_10_Template, 3, 0, "div", 9);
|
|
178
178
|
i0.ɵɵelementEnd();
|
|
179
|
-
i0.ɵɵelementStart(11, "div",
|
|
180
|
-
i0.ɵɵelement(13, "i",
|
|
179
|
+
i0.ɵɵelementStart(11, "div", 4)(12, "div", 5);
|
|
180
|
+
i0.ɵɵelement(13, "i", 10);
|
|
181
181
|
i0.ɵɵelementStart(14, "span");
|
|
182
182
|
i0.ɵɵtext(15, "Bridge identities");
|
|
183
183
|
i0.ɵɵelementEnd();
|
|
184
|
-
i0.ɵɵelementStart(16, "span",
|
|
184
|
+
i0.ɵɵelementStart(16, "span", 7);
|
|
185
185
|
i0.ɵɵtext(17);
|
|
186
186
|
i0.ɵɵelementEnd()();
|
|
187
|
-
i0.ɵɵconditionalCreate(18, AgentRealtimePanel_Conditional_3_Conditional_18_Template, 2, 0, "div",
|
|
187
|
+
i0.ɵɵconditionalCreate(18, AgentRealtimePanel_Conditional_3_Conditional_18_Template, 2, 0, "div", 8)(19, AgentRealtimePanel_Conditional_3_Conditional_19_Template, 3, 0, "div", 9);
|
|
188
188
|
i0.ɵɵelementEnd();
|
|
189
|
-
i0.ɵɵelementStart(20, "div",
|
|
190
|
-
i0.ɵɵelement(22, "i",
|
|
189
|
+
i0.ɵɵelementStart(20, "div", 4)(21, "div", 5);
|
|
190
|
+
i0.ɵɵelement(22, "i", 11);
|
|
191
191
|
i0.ɵɵelementStart(23, "span");
|
|
192
192
|
i0.ɵɵtext(24, "Type configuration");
|
|
193
193
|
i0.ɵɵelementEnd()();
|
|
194
|
-
i0.ɵɵconditionalCreate(25, AgentRealtimePanel_Conditional_3_Conditional_25_Template, 2, 1, "pre",
|
|
194
|
+
i0.ɵɵconditionalCreate(25, AgentRealtimePanel_Conditional_3_Conditional_25_Template, 2, 1, "pre", 12)(26, AgentRealtimePanel_Conditional_3_Conditional_26_Template, 2, 0, "div", 8);
|
|
195
195
|
i0.ɵɵelementEnd();
|
|
196
196
|
} if (rf & 2) {
|
|
197
197
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -331,15 +331,15 @@ let AgentRealtimePanel = class AgentRealtimePanel extends BaseFormPanel {
|
|
|
331
331
|
SharedService.Instance.OpenEntityRecord('MJ: AI Bridge Agent Identities', CompositeKey.FromID(i.ID));
|
|
332
332
|
}
|
|
333
333
|
static { this.ɵfac = /*@__PURE__*/ (() => { let ɵAgentRealtimePanel_BaseFactory; return function AgentRealtimePanel_Factory(__ngFactoryType__) { return (ɵAgentRealtimePanel_BaseFactory || (ɵAgentRealtimePanel_BaseFactory = i0.ɵɵgetInheritedFactory(AgentRealtimePanel)))(__ngFactoryType__ || AgentRealtimePanel); }; })(); }
|
|
334
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AgentRealtimePanel, selectors: [["mj-ai-agent-realtime-panel"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 4, vars: 3, consts: [["SectionKey", "agentRealtime", "SectionName", "Realtime", "Icon", "fa fa-tower-broadcast", 3, "Form", "FormContext"], ["text", "Loading realtime setup..."], [
|
|
334
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AgentRealtimePanel, selectors: [["mj-ai-agent-realtime-panel"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 4, vars: 3, consts: [["SectionKey", "agentRealtime", "SectionName", "Realtime", "Icon", "fa fa-tower-broadcast", 3, "Form", "FormContext"], ["text", "Loading realtime setup..."], ["Variant", "error"], [1, "rt-intro"], [1, "rt-section"], [1, "rt-section-header"], [1, "fa-solid", "fa-people-arrows"], [1, "rt-count"], [1, "rt-empty"], [1, "rt-list"], [1, "fa-solid", "fa-id-card"], [1, "fa-solid", "fa-gears"], [1, "rt-config"], ["type", "button", 1, "rt-row"], ["type", "button", 1, "rt-row", 3, "click"], [1, "rt-row-icon"], [1, "rt-row-main"], [1, "rt-row-title"], [1, "rt-row-sub"], [1, "rt-status"], [1, "rt-rel"], [1, "rt-tag"]], template: function AgentRealtimePanel_Template(rf, ctx) { if (rf & 1) {
|
|
335
335
|
i0.ɵɵelementStart(0, "mj-collapsible-panel", 0);
|
|
336
|
-
i0.ɵɵconditionalCreate(1, AgentRealtimePanel_Conditional_1_Template, 1, 0, "mj-loading", 1)(2, AgentRealtimePanel_Conditional_2_Template,
|
|
336
|
+
i0.ɵɵconditionalCreate(1, AgentRealtimePanel_Conditional_1_Template, 1, 0, "mj-loading", 1)(2, AgentRealtimePanel_Conditional_2_Template, 2, 1, "mj-alert", 2)(3, AgentRealtimePanel_Conditional_3_Template, 27, 5);
|
|
337
337
|
i0.ɵɵelementEnd();
|
|
338
338
|
} if (rf & 2) {
|
|
339
339
|
i0.ɵɵproperty("Form", ctx.FormComponent)("FormContext", ctx.FormContext);
|
|
340
340
|
i0.ɵɵadvance();
|
|
341
341
|
i0.ɵɵconditional(ctx.Loading ? 1 : ctx.LoadError ? 2 : 3);
|
|
342
|
-
} }, dependencies: [i1.
|
|
342
|
+
} }, dependencies: [i1.MJAlertComponent, i2.MjCollapsiblePanelComponent, i3.LoadingComponent], styles: ["\n\n\n\n.rt-intro[_ngcontent-%COMP%] {\n font-size: 12px;\n line-height: 1.5;\n color: var(--mj-text-secondary);\n margin: 0 0 14px;\n max-width: 92ch;\n}\n\n.rt-section[_ngcontent-%COMP%] { margin-bottom: 18px; }\n.rt-section[_ngcontent-%COMP%]:last-child { margin-bottom: 0; }\n\n.rt-section-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.06em;\n font-weight: 700;\n color: var(--mj-text-muted);\n margin: 0 0 8px;\n}\n.rt-section-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n.rt-count[_ngcontent-%COMP%] {\n margin-left: auto;\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n padding: 1px 8px;\n}\n\n.rt-empty[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n padding: 8px 0;\n}\n\n.rt-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n background: var(--mj-bg-surface);\n}\n.rt-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n text-align: left;\n padding: 10px 14px;\n border: 0;\n border-top: 1px solid var(--mj-border-subtle);\n background: transparent;\n cursor: pointer;\n color: var(--mj-text-primary);\n transition: background 0.12s;\n}\n.rt-row[_ngcontent-%COMP%]:first-child { border-top: 0; }\n.rt-row[_ngcontent-%COMP%]:hover { background: var(--mj-bg-surface-hover); }\n\n.rt-row-icon[_ngcontent-%COMP%] {\n flex: 0 0 auto;\n width: 30px;\n height: 30px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 13px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n}\n.rt-row-main[_ngcontent-%COMP%] { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1 1 auto; }\n.rt-row-title[_ngcontent-%COMP%] { font-size: 13px; font-weight: 600; }\n.rt-row-title[_ngcontent-%COMP%] .rt-rel[_ngcontent-%COMP%] { color: var(--mj-text-muted); font-weight: 400; }\n.rt-row-sub[_ngcontent-%COMP%] { font-size: 11px; color: var(--mj-text-muted); }\n.rt-tag[_ngcontent-%COMP%] {\n font-size: 10px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-brand-primary);\n}\n\n.rt-status[_ngcontent-%COMP%] {\n flex: 0 0 auto;\n font-size: 11px;\n font-weight: 600;\n padding: 2px 9px;\n border-radius: 10px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n}\n.rt-status.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 14%, transparent);\n color: var(--mj-status-success-text, var(--mj-status-success));\n}\n\n.rt-config[_ngcontent-%COMP%] {\n margin: 0;\n padding: 12px 14px;\n border-radius: 8px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n font-family: ui-monospace, monospace;\n font-size: 12px;\n line-height: 1.5;\n color: var(--mj-text-primary);\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 360px;\n overflow: auto;\n}"] }); }
|
|
343
343
|
};
|
|
344
344
|
AgentRealtimePanel = __decorate([
|
|
345
345
|
RegisterClassEx(BaseFormPanel, {
|
|
@@ -355,7 +355,7 @@ AgentRealtimePanel = __decorate([
|
|
|
355
355
|
export { AgentRealtimePanel };
|
|
356
356
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AgentRealtimePanel, [{
|
|
357
357
|
type: Component,
|
|
358
|
-
args: [{ standalone: false, selector: 'mj-ai-agent-realtime-panel', template: "<mj-collapsible-panel\n SectionKey=\"agentRealtime\"\n SectionName=\"Realtime\"\n Icon=\"fa fa-tower-broadcast\"\n [Form]=\"FormComponent\"\n [FormContext]=\"FormContext\">\n\n @if (Loading) {\n <mj-loading text=\"Loading realtime setup...\"></mj-loading>\n } @else if (LoadError) {\n <
|
|
358
|
+
args: [{ standalone: false, selector: 'mj-ai-agent-realtime-panel', template: "<mj-collapsible-panel\n SectionKey=\"agentRealtime\"\n SectionName=\"Realtime\"\n Icon=\"fa fa-tower-broadcast\"\n [Form]=\"FormComponent\"\n [FormContext]=\"FormContext\">\n\n @if (Loading) {\n <mj-loading text=\"Loading realtime setup...\"></mj-loading>\n } @else if (LoadError) {\n <mj-alert Variant=\"error\">{{ LoadError }}</mj-alert>\n } @else {\n <p class=\"rt-intro\">\n A one-place summary of this agent's realtime / bridge setup \u2014 its co-agent pairings, its\n type-level realtime configuration, and the bridge identities that route inbound calls and invites to it.\n </p>\n\n <!-- Co-agent pairings -->\n <div class=\"rt-section\">\n <div class=\"rt-section-header\">\n <i class=\"fa-solid fa-people-arrows\"></i>\n <span>Co-agent pairings</span>\n <span class=\"rt-count\">{{ Pairings.length }}</span>\n </div>\n @if (Pairings.length === 0) {\n <div class=\"rt-empty\">No co-agent pairings reference this agent.</div>\n } @else {\n <div class=\"rt-list\">\n @for (p of Pairings; track p.ID) {\n <button type=\"button\" class=\"rt-row\" (click)=\"OpenPairing(p)\">\n <span class=\"rt-row-icon\"><i class=\"fa-solid {{ PairingTypeIcon(p.Type) }}\"></i></span>\n <span class=\"rt-row-main\">\n <span class=\"rt-row-title\">\n {{ p.Type }}\n @if (p.role === 'as-coagent') {\n <span class=\"rt-rel\">voices</span> {{ OtherAgentName(p) }}\n } @else {\n <span class=\"rt-rel\">voiced by</span> {{ OtherAgentName(p) }}\n }\n </span>\n <span class=\"rt-row-sub\">\n seq {{ p.Sequence }}\n @if (p.IsDefault) { \u00B7 <span class=\"rt-tag\">default</span> }\n </span>\n </span>\n <span class=\"rt-status\" [class.active]=\"p.Status === 'Active'\">{{ p.Status }}</span>\n </button>\n }\n </div>\n }\n </div>\n\n <!-- Bridge identities -->\n <div class=\"rt-section\">\n <div class=\"rt-section-header\">\n <i class=\"fa-solid fa-id-card\"></i>\n <span>Bridge identities</span>\n <span class=\"rt-count\">{{ Identities.length }}</span>\n </div>\n @if (Identities.length === 0) {\n <div class=\"rt-empty\">No bridge identities provisioned for this agent.</div>\n } @else {\n <div class=\"rt-list\">\n @for (i of Identities; track i.ID) {\n <button type=\"button\" class=\"rt-row\" (click)=\"OpenIdentity(i)\">\n <span class=\"rt-row-icon\"><i class=\"fa-solid {{ IdentityTypeIcon(i.IdentityType) }}\"></i></span>\n <span class=\"rt-row-main\">\n <span class=\"rt-row-title\">{{ i.DisplayName || i.IdentityValue }}</span>\n <span class=\"rt-row-sub\">{{ i.IdentityType }} \u00B7 {{ i.Provider }}</span>\n </span>\n <span class=\"rt-status\" [class.active]=\"i.IsActive\">{{ i.IsActive ? 'Active' : 'Inactive' }}</span>\n </button>\n }\n </div>\n }\n </div>\n\n <!-- Type configuration -->\n <div class=\"rt-section\">\n <div class=\"rt-section-header\">\n <i class=\"fa-solid fa-gears\"></i>\n <span>Type configuration</span>\n </div>\n @if (PrettyTypeConfiguration) {\n <pre class=\"rt-config\">{{ PrettyTypeConfiguration }}</pre>\n } @else {\n <div class=\"rt-empty\">No type configuration set \u2014 this agent uses its type's defaults.</div>\n }\n </div>\n }\n</mj-collapsible-panel>\n", styles: ["/* AI Agent Realtime panel \u2014 read-only summary of pairings / identities / type config.\n Tokens only. */\n\n.rt-intro {\n font-size: 12px;\n line-height: 1.5;\n color: var(--mj-text-secondary);\n margin: 0 0 14px;\n max-width: 92ch;\n}\n\n.rt-section { margin-bottom: 18px; }\n.rt-section:last-child { margin-bottom: 0; }\n\n.rt-section-header {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.06em;\n font-weight: 700;\n color: var(--mj-text-muted);\n margin: 0 0 8px;\n}\n.rt-section-header i { color: var(--mj-brand-primary); }\n.rt-count {\n margin-left: auto;\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n padding: 1px 8px;\n}\n\n.rt-empty {\n font-size: 12px;\n color: var(--mj-text-muted);\n padding: 8px 0;\n}\n\n.rt-list {\n display: flex;\n flex-direction: column;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n background: var(--mj-bg-surface);\n}\n.rt-row {\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n text-align: left;\n padding: 10px 14px;\n border: 0;\n border-top: 1px solid var(--mj-border-subtle);\n background: transparent;\n cursor: pointer;\n color: var(--mj-text-primary);\n transition: background 0.12s;\n}\n.rt-row:first-child { border-top: 0; }\n.rt-row:hover { background: var(--mj-bg-surface-hover); }\n\n.rt-row-icon {\n flex: 0 0 auto;\n width: 30px;\n height: 30px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 13px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n color: var(--mj-brand-primary);\n}\n.rt-row-main { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1 1 auto; }\n.rt-row-title { font-size: 13px; font-weight: 600; }\n.rt-row-title .rt-rel { color: var(--mj-text-muted); font-weight: 400; }\n.rt-row-sub { font-size: 11px; color: var(--mj-text-muted); }\n.rt-tag {\n font-size: 10px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-brand-primary);\n}\n\n.rt-status {\n flex: 0 0 auto;\n font-size: 11px;\n font-weight: 600;\n padding: 2px 9px;\n border-radius: 10px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n}\n.rt-status.active {\n background: color-mix(in srgb, var(--mj-status-success) 14%, transparent);\n color: var(--mj-status-success-text, var(--mj-status-success));\n}\n\n.rt-config {\n margin: 0;\n padding: 12px 14px;\n border-radius: 8px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n font-family: ui-monospace, monospace;\n font-size: 12px;\n line-height: 1.5;\n color: var(--mj-text-primary);\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 360px;\n overflow: auto;\n}\n"] }]
|
|
359
359
|
}], null, null); })();
|
|
360
360
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AgentRealtimePanel, { className: "AgentRealtimePanel", filePath: "src/lib/panels/ai-agents/agent-realtime.panel.ts", lineNumber: 65 }); })();
|
|
361
361
|
/** Tree-shake guard — invoked from the panels module loader. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-realtime.panel.js","sourceRoot":"","sources":["../../../../src/lib/panels/ai-agents/agent-realtime.panel.ts","../../../../src/lib/panels/ai-agents/agent-realtime.panel.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, inject, ChangeDetectorRef } from '@angular/core';\nimport { CompositeKey, RunView } from '@memberjunction/core';\nimport { RegisterClassEx, UUIDsEqual } from '@memberjunction/global';\nimport { BaseFormPanel } from '@memberjunction/ng-base-forms';\nimport { MJAIAgentEntity } from '@memberjunction/core-entities';\nimport { SharedService } from '@memberjunction/ng-shared';\n\n/** Read-only co-agent pairing row for the summary list. */\ninterface CoAgentPairingRow {\n ID: string;\n CoAgentID: string;\n CoAgent: string | null;\n TargetAgentID: string | null;\n TargetAgent: string | null;\n Type: string;\n IsDefault: boolean;\n Sequence: number;\n Status: string;\n /** 'as-coagent' = this agent IS the co-agent; 'as-target' = this agent is the voiced target. */\n role: 'as-coagent' | 'as-target';\n}\n\n/** Read-only bridge identity row for the summary list. */\ninterface BridgeIdentityRow {\n ID: string;\n IdentityType: string;\n IdentityValue: string;\n DisplayName: string | null;\n Provider: string;\n IsActive: boolean;\n}\n\n/**\n * AI Agent \"Realtime\" panel (Pattern 1 — BaseFormPanel slot). A read-only\n * summary that puts an agent's realtime / bridge setup in one place:\n * - its co-agent pairings (rows where this agent is the co-agent OR the\n * voiced target, from 'MJ: AI Agent Co Agents'),\n * - its `TypeConfiguration` (the agent's typed realtime config layer),\n * - its bridge agent identities ('MJ: AI Bridge Agent Identities' for this\n * agent).\n *\n * Registers against the 'AI Agents' entity, `after-fields` slot. The AI Agent\n * form is a full custom override whose template doesn't emit the `after-fields`\n * marker, so this panel falls through to the container's always-present\n * `after-everything` slot and mounts at the bottom of the form — functional,\n * just lower than ideal until the custom form emits the slot marker.\n *\n * Provider-correct: all RunViews are scoped to the host form's `ProviderToUse`.\n */\n@RegisterClassEx(BaseFormPanel, {\n key: 'ai-agents:realtime',\n skipNullKeyWarning: true,\n metadata: {\n entity: 'AI Agents',\n slot: 'after-fields',\n sortKey: 40,\n },\n})\n@Component({\n standalone: false,\n selector: 'mj-ai-agent-realtime-panel',\n templateUrl: './agent-realtime.panel.html',\n styleUrls: ['./agent-realtime.panel.css'],\n})\nexport class AgentRealtimePanel extends BaseFormPanel<MJAIAgentEntity> implements OnInit {\n private cdr = inject(ChangeDetectorRef);\n\n public Loading = false;\n public LoadError: string | null = null;\n public Pairings: CoAgentPairingRow[] = [];\n public Identities: BridgeIdentityRow[] = [];\n\n private prettyTypeConfigCache: string | null | undefined = undefined;\n\n async ngOnInit(): Promise<void> {\n await this.loadData();\n }\n\n /** Pretty-printed TypeConfiguration JSON (cached, falls back to raw on parse error). */\n public get PrettyTypeConfiguration(): string | null {\n if (this.prettyTypeConfigCache !== undefined) return this.prettyTypeConfigCache;\n const raw = this.Record?.TypeConfiguration ?? null;\n if (!raw) {\n this.prettyTypeConfigCache = null;\n return null;\n }\n try {\n this.prettyTypeConfigCache = JSON.stringify(JSON.parse(raw), null, 2);\n } catch {\n this.prettyTypeConfigCache = raw;\n }\n return this.prettyTypeConfigCache;\n }\n\n public get HasAnything(): boolean {\n return this.Pairings.length > 0 || this.Identities.length > 0 || this.PrettyTypeConfiguration != null;\n }\n\n /**\n * Loads the agent's pairings + bridge identities in one batched round trip,\n * scoped to the host form's provider. TypeConfiguration is read straight off\n * the already-loaded record (no query needed).\n */\n private async loadData(): Promise<void> {\n const agentId = this.Record?.ID;\n if (!agentId) return;\n\n this.Loading = true;\n this.LoadError = null;\n try {\n const rv = RunView.FromMetadataProvider(this.FormComponent.ProviderToUse);\n const results = await rv.RunViews([\n {\n EntityName: 'MJ: AI Agent Co Agents',\n Fields: ['ID', 'CoAgentID', 'CoAgent', 'TargetAgentID', 'TargetAgent', 'Type', 'IsDefault', 'Sequence', 'Status'],\n ExtraFilter: `CoAgentID='${agentId}' OR TargetAgentID='${agentId}'`,\n OrderBy: 'Sequence ASC',\n ResultType: 'simple',\n },\n {\n EntityName: 'MJ: AI Bridge Agent Identities',\n Fields: ['ID', 'IdentityType', 'IdentityValue', 'DisplayName', 'Provider', 'IsActive'],\n ExtraFilter: `AgentID='${agentId}'`,\n OrderBy: 'Provider ASC',\n ResultType: 'simple',\n },\n ]);\n\n const pairings = (results[0]?.Success ? results[0].Results : []) as Array<Omit<CoAgentPairingRow, 'role'>>;\n this.Pairings = pairings.map((p) => ({\n ...p,\n role: UUIDsEqual(p.CoAgentID, agentId) ? 'as-coagent' : 'as-target',\n }));\n this.Identities = (results[1]?.Success ? results[1].Results : []) as BridgeIdentityRow[];\n } catch (error) {\n console.error('Error loading agent realtime panel data:', error);\n this.LoadError = 'Failed to load realtime setup.';\n } finally {\n this.Loading = false;\n this.cdr.markForCheck();\n }\n }\n\n public PairingTypeIcon(type: string): string {\n switch (type) {\n case 'CoAgent': return 'fa-microphone-lines';\n case 'Delegate': return 'fa-share-from-square';\n case 'Fallback': return 'fa-life-ring';\n case 'Observer': return 'fa-eye';\n case 'Peer': return 'fa-people-arrows';\n case 'Reviewer': return 'fa-clipboard-check';\n default: return 'fa-link';\n }\n }\n\n public IdentityTypeIcon(type: string): string {\n switch (type) {\n case 'Email': return 'fa-envelope';\n case 'PhoneNumber': return 'fa-phone';\n case 'AccountID': return 'fa-id-badge';\n default: return 'fa-id-card';\n }\n }\n\n /** The \"other\" agent in a pairing (the one that isn't the agent on this form). */\n public OtherAgentName(p: CoAgentPairingRow): string {\n return p.role === 'as-coagent' ? (p.TargetAgent ?? 'this agent') : (p.CoAgent ?? 'unknown co-agent');\n }\n\n public OpenPairing(p: CoAgentPairingRow): void {\n SharedService.Instance.OpenEntityRecord('MJ: AI Agent Co Agents', CompositeKey.FromID(p.ID));\n }\n\n public OpenIdentity(i: BridgeIdentityRow): void {\n SharedService.Instance.OpenEntityRecord('MJ: AI Bridge Agent Identities', CompositeKey.FromID(i.ID));\n }\n}\n\n/** Tree-shake guard — invoked from the panels module loader. */\nexport function LoadAgentRealtimePanel(): void {\n /* no-op marker */\n}\n","<mj-collapsible-panel\n SectionKey=\"agentRealtime\"\n SectionName=\"Realtime\"\n Icon=\"fa fa-tower-broadcast\"\n [Form]=\"FormComponent\"\n [FormContext]=\"FormContext\">\n\n @if (Loading) {\n <mj-loading text=\"Loading realtime setup...\"></mj-loading>\n } @else if (LoadError) {\n <div class=\"rt-error\"><i class=\"fa-solid fa-triangle-exclamation\"></i> {{ LoadError }}</div>\n } @else {\n <p class=\"rt-intro\">\n A one-place summary of this agent's realtime / bridge setup — its co-agent pairings, its\n type-level realtime configuration, and the bridge identities that route inbound calls and invites to it.\n </p>\n\n <!-- Co-agent pairings -->\n <div class=\"rt-section\">\n <div class=\"rt-section-header\">\n <i class=\"fa-solid fa-people-arrows\"></i>\n <span>Co-agent pairings</span>\n <span class=\"rt-count\">{{ Pairings.length }}</span>\n </div>\n @if (Pairings.length === 0) {\n <div class=\"rt-empty\">No co-agent pairings reference this agent.</div>\n } @else {\n <div class=\"rt-list\">\n @for (p of Pairings; track p.ID) {\n <button type=\"button\" class=\"rt-row\" (click)=\"OpenPairing(p)\">\n <span class=\"rt-row-icon\"><i class=\"fa-solid {{ PairingTypeIcon(p.Type) }}\"></i></span>\n <span class=\"rt-row-main\">\n <span class=\"rt-row-title\">\n {{ p.Type }}\n @if (p.role === 'as-coagent') {\n <span class=\"rt-rel\">voices</span> {{ OtherAgentName(p) }}\n } @else {\n <span class=\"rt-rel\">voiced by</span> {{ OtherAgentName(p) }}\n }\n </span>\n <span class=\"rt-row-sub\">\n seq {{ p.Sequence }}\n @if (p.IsDefault) { · <span class=\"rt-tag\">default</span> }\n </span>\n </span>\n <span class=\"rt-status\" [class.active]=\"p.Status === 'Active'\">{{ p.Status }}</span>\n </button>\n }\n </div>\n }\n </div>\n\n <!-- Bridge identities -->\n <div class=\"rt-section\">\n <div class=\"rt-section-header\">\n <i class=\"fa-solid fa-id-card\"></i>\n <span>Bridge identities</span>\n <span class=\"rt-count\">{{ Identities.length }}</span>\n </div>\n @if (Identities.length === 0) {\n <div class=\"rt-empty\">No bridge identities provisioned for this agent.</div>\n } @else {\n <div class=\"rt-list\">\n @for (i of Identities; track i.ID) {\n <button type=\"button\" class=\"rt-row\" (click)=\"OpenIdentity(i)\">\n <span class=\"rt-row-icon\"><i class=\"fa-solid {{ IdentityTypeIcon(i.IdentityType) }}\"></i></span>\n <span class=\"rt-row-main\">\n <span class=\"rt-row-title\">{{ i.DisplayName || i.IdentityValue }}</span>\n <span class=\"rt-row-sub\">{{ i.IdentityType }} · {{ i.Provider }}</span>\n </span>\n <span class=\"rt-status\" [class.active]=\"i.IsActive\">{{ i.IsActive ? 'Active' : 'Inactive' }}</span>\n </button>\n }\n </div>\n }\n </div>\n\n <!-- Type configuration -->\n <div class=\"rt-section\">\n <div class=\"rt-section-header\">\n <i class=\"fa-solid fa-gears\"></i>\n <span>Type configuration</span>\n </div>\n @if (PrettyTypeConfiguration) {\n <pre class=\"rt-config\">{{ PrettyTypeConfiguration }}</pre>\n } @else {\n <div class=\"rt-empty\">No type configuration set — this agent uses its type's defaults.</div>\n }\n </div>\n }\n</mj-collapsible-panel>\n"]}
|
|
1
|
+
{"version":3,"file":"agent-realtime.panel.js","sourceRoot":"","sources":["../../../../src/lib/panels/ai-agents/agent-realtime.panel.ts","../../../../src/lib/panels/ai-agents/agent-realtime.panel.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, inject, ChangeDetectorRef } from '@angular/core';\nimport { CompositeKey, RunView } from '@memberjunction/core';\nimport { RegisterClassEx, UUIDsEqual } from '@memberjunction/global';\nimport { BaseFormPanel } from '@memberjunction/ng-base-forms';\nimport { MJAIAgentEntity } from '@memberjunction/core-entities';\nimport { SharedService } from '@memberjunction/ng-shared';\n\n/** Read-only co-agent pairing row for the summary list. */\ninterface CoAgentPairingRow {\n ID: string;\n CoAgentID: string;\n CoAgent: string | null;\n TargetAgentID: string | null;\n TargetAgent: string | null;\n Type: string;\n IsDefault: boolean;\n Sequence: number;\n Status: string;\n /** 'as-coagent' = this agent IS the co-agent; 'as-target' = this agent is the voiced target. */\n role: 'as-coagent' | 'as-target';\n}\n\n/** Read-only bridge identity row for the summary list. */\ninterface BridgeIdentityRow {\n ID: string;\n IdentityType: string;\n IdentityValue: string;\n DisplayName: string | null;\n Provider: string;\n IsActive: boolean;\n}\n\n/**\n * AI Agent \"Realtime\" panel (Pattern 1 — BaseFormPanel slot). A read-only\n * summary that puts an agent's realtime / bridge setup in one place:\n * - its co-agent pairings (rows where this agent is the co-agent OR the\n * voiced target, from 'MJ: AI Agent Co Agents'),\n * - its `TypeConfiguration` (the agent's typed realtime config layer),\n * - its bridge agent identities ('MJ: AI Bridge Agent Identities' for this\n * agent).\n *\n * Registers against the 'AI Agents' entity, `after-fields` slot. The AI Agent\n * form is a full custom override whose template doesn't emit the `after-fields`\n * marker, so this panel falls through to the container's always-present\n * `after-everything` slot and mounts at the bottom of the form — functional,\n * just lower than ideal until the custom form emits the slot marker.\n *\n * Provider-correct: all RunViews are scoped to the host form's `ProviderToUse`.\n */\n@RegisterClassEx(BaseFormPanel, {\n key: 'ai-agents:realtime',\n skipNullKeyWarning: true,\n metadata: {\n entity: 'AI Agents',\n slot: 'after-fields',\n sortKey: 40,\n },\n})\n@Component({\n standalone: false,\n selector: 'mj-ai-agent-realtime-panel',\n templateUrl: './agent-realtime.panel.html',\n styleUrls: ['./agent-realtime.panel.css'],\n})\nexport class AgentRealtimePanel extends BaseFormPanel<MJAIAgentEntity> implements OnInit {\n private cdr = inject(ChangeDetectorRef);\n\n public Loading = false;\n public LoadError: string | null = null;\n public Pairings: CoAgentPairingRow[] = [];\n public Identities: BridgeIdentityRow[] = [];\n\n private prettyTypeConfigCache: string | null | undefined = undefined;\n\n async ngOnInit(): Promise<void> {\n await this.loadData();\n }\n\n /** Pretty-printed TypeConfiguration JSON (cached, falls back to raw on parse error). */\n public get PrettyTypeConfiguration(): string | null {\n if (this.prettyTypeConfigCache !== undefined) return this.prettyTypeConfigCache;\n const raw = this.Record?.TypeConfiguration ?? null;\n if (!raw) {\n this.prettyTypeConfigCache = null;\n return null;\n }\n try {\n this.prettyTypeConfigCache = JSON.stringify(JSON.parse(raw), null, 2);\n } catch {\n this.prettyTypeConfigCache = raw;\n }\n return this.prettyTypeConfigCache;\n }\n\n public get HasAnything(): boolean {\n return this.Pairings.length > 0 || this.Identities.length > 0 || this.PrettyTypeConfiguration != null;\n }\n\n /**\n * Loads the agent's pairings + bridge identities in one batched round trip,\n * scoped to the host form's provider. TypeConfiguration is read straight off\n * the already-loaded record (no query needed).\n */\n private async loadData(): Promise<void> {\n const agentId = this.Record?.ID;\n if (!agentId) return;\n\n this.Loading = true;\n this.LoadError = null;\n try {\n const rv = RunView.FromMetadataProvider(this.FormComponent.ProviderToUse);\n const results = await rv.RunViews([\n {\n EntityName: 'MJ: AI Agent Co Agents',\n Fields: ['ID', 'CoAgentID', 'CoAgent', 'TargetAgentID', 'TargetAgent', 'Type', 'IsDefault', 'Sequence', 'Status'],\n ExtraFilter: `CoAgentID='${agentId}' OR TargetAgentID='${agentId}'`,\n OrderBy: 'Sequence ASC',\n ResultType: 'simple',\n },\n {\n EntityName: 'MJ: AI Bridge Agent Identities',\n Fields: ['ID', 'IdentityType', 'IdentityValue', 'DisplayName', 'Provider', 'IsActive'],\n ExtraFilter: `AgentID='${agentId}'`,\n OrderBy: 'Provider ASC',\n ResultType: 'simple',\n },\n ]);\n\n const pairings = (results[0]?.Success ? results[0].Results : []) as Array<Omit<CoAgentPairingRow, 'role'>>;\n this.Pairings = pairings.map((p) => ({\n ...p,\n role: UUIDsEqual(p.CoAgentID, agentId) ? 'as-coagent' : 'as-target',\n }));\n this.Identities = (results[1]?.Success ? results[1].Results : []) as BridgeIdentityRow[];\n } catch (error) {\n console.error('Error loading agent realtime panel data:', error);\n this.LoadError = 'Failed to load realtime setup.';\n } finally {\n this.Loading = false;\n this.cdr.markForCheck();\n }\n }\n\n public PairingTypeIcon(type: string): string {\n switch (type) {\n case 'CoAgent': return 'fa-microphone-lines';\n case 'Delegate': return 'fa-share-from-square';\n case 'Fallback': return 'fa-life-ring';\n case 'Observer': return 'fa-eye';\n case 'Peer': return 'fa-people-arrows';\n case 'Reviewer': return 'fa-clipboard-check';\n default: return 'fa-link';\n }\n }\n\n public IdentityTypeIcon(type: string): string {\n switch (type) {\n case 'Email': return 'fa-envelope';\n case 'PhoneNumber': return 'fa-phone';\n case 'AccountID': return 'fa-id-badge';\n default: return 'fa-id-card';\n }\n }\n\n /** The \"other\" agent in a pairing (the one that isn't the agent on this form). */\n public OtherAgentName(p: CoAgentPairingRow): string {\n return p.role === 'as-coagent' ? (p.TargetAgent ?? 'this agent') : (p.CoAgent ?? 'unknown co-agent');\n }\n\n public OpenPairing(p: CoAgentPairingRow): void {\n SharedService.Instance.OpenEntityRecord('MJ: AI Agent Co Agents', CompositeKey.FromID(p.ID));\n }\n\n public OpenIdentity(i: BridgeIdentityRow): void {\n SharedService.Instance.OpenEntityRecord('MJ: AI Bridge Agent Identities', CompositeKey.FromID(i.ID));\n }\n}\n\n/** Tree-shake guard — invoked from the panels module loader. */\nexport function LoadAgentRealtimePanel(): void {\n /* no-op marker */\n}\n","<mj-collapsible-panel\n SectionKey=\"agentRealtime\"\n SectionName=\"Realtime\"\n Icon=\"fa fa-tower-broadcast\"\n [Form]=\"FormComponent\"\n [FormContext]=\"FormContext\">\n\n @if (Loading) {\n <mj-loading text=\"Loading realtime setup...\"></mj-loading>\n } @else if (LoadError) {\n <mj-alert Variant=\"error\">{{ LoadError }}</mj-alert>\n } @else {\n <p class=\"rt-intro\">\n A one-place summary of this agent's realtime / bridge setup — its co-agent pairings, its\n type-level realtime configuration, and the bridge identities that route inbound calls and invites to it.\n </p>\n\n <!-- Co-agent pairings -->\n <div class=\"rt-section\">\n <div class=\"rt-section-header\">\n <i class=\"fa-solid fa-people-arrows\"></i>\n <span>Co-agent pairings</span>\n <span class=\"rt-count\">{{ Pairings.length }}</span>\n </div>\n @if (Pairings.length === 0) {\n <div class=\"rt-empty\">No co-agent pairings reference this agent.</div>\n } @else {\n <div class=\"rt-list\">\n @for (p of Pairings; track p.ID) {\n <button type=\"button\" class=\"rt-row\" (click)=\"OpenPairing(p)\">\n <span class=\"rt-row-icon\"><i class=\"fa-solid {{ PairingTypeIcon(p.Type) }}\"></i></span>\n <span class=\"rt-row-main\">\n <span class=\"rt-row-title\">\n {{ p.Type }}\n @if (p.role === 'as-coagent') {\n <span class=\"rt-rel\">voices</span> {{ OtherAgentName(p) }}\n } @else {\n <span class=\"rt-rel\">voiced by</span> {{ OtherAgentName(p) }}\n }\n </span>\n <span class=\"rt-row-sub\">\n seq {{ p.Sequence }}\n @if (p.IsDefault) { · <span class=\"rt-tag\">default</span> }\n </span>\n </span>\n <span class=\"rt-status\" [class.active]=\"p.Status === 'Active'\">{{ p.Status }}</span>\n </button>\n }\n </div>\n }\n </div>\n\n <!-- Bridge identities -->\n <div class=\"rt-section\">\n <div class=\"rt-section-header\">\n <i class=\"fa-solid fa-id-card\"></i>\n <span>Bridge identities</span>\n <span class=\"rt-count\">{{ Identities.length }}</span>\n </div>\n @if (Identities.length === 0) {\n <div class=\"rt-empty\">No bridge identities provisioned for this agent.</div>\n } @else {\n <div class=\"rt-list\">\n @for (i of Identities; track i.ID) {\n <button type=\"button\" class=\"rt-row\" (click)=\"OpenIdentity(i)\">\n <span class=\"rt-row-icon\"><i class=\"fa-solid {{ IdentityTypeIcon(i.IdentityType) }}\"></i></span>\n <span class=\"rt-row-main\">\n <span class=\"rt-row-title\">{{ i.DisplayName || i.IdentityValue }}</span>\n <span class=\"rt-row-sub\">{{ i.IdentityType }} · {{ i.Provider }}</span>\n </span>\n <span class=\"rt-status\" [class.active]=\"i.IsActive\">{{ i.IsActive ? 'Active' : 'Inactive' }}</span>\n </button>\n }\n </div>\n }\n </div>\n\n <!-- Type configuration -->\n <div class=\"rt-section\">\n <div class=\"rt-section-header\">\n <i class=\"fa-solid fa-gears\"></i>\n <span>Type configuration</span>\n </div>\n @if (PrettyTypeConfiguration) {\n <pre class=\"rt-config\">{{ PrettyTypeConfiguration }}</pre>\n } @else {\n <div class=\"rt-empty\">No type configuration set — this agent uses its type's defaults.</div>\n }\n </div>\n }\n</mj-collapsible-panel>\n"]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { ElementRef } from '@angular/core';
|
|
2
|
+
import { BaseFormPanel } from '@memberjunction/ng-base-forms';
|
|
3
|
+
import { MJAISkillEntity } from '@memberjunction/core-entities';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* Adds Manage Permissions / Export SKILL.md / Import SKILL.md actions to the generated
|
|
7
|
+
* `MJ: AI Skills` form via the BaseFormPanel slot system (Pattern 1 — see PANELS.md) rather than a
|
|
8
|
+
* full custom form override, since the generated form's field panels and related-entity grids are
|
|
9
|
+
* otherwise fine as-is.
|
|
10
|
+
*
|
|
11
|
+
* - Manage Permissions opens the dedicated `<mj-skill-permissions-dialog>` (from
|
|
12
|
+
* `@memberjunction/ng-agents`), which reads/writes the dedicated `MJ: AI Skill Permissions`
|
|
13
|
+
* table (per-user / per-role View/Run/Edit/Delete) — the same open-by-default, dedicated-table
|
|
14
|
+
* model AI Agents use. It is gated behind the "Can Share Skills" authorization; authoring/using
|
|
15
|
+
* your own skills never requires it.
|
|
16
|
+
* - Export/Import call the `AISkill.ExportMarkdown` / `AISkill.ImportMarkdown` Remote Operations
|
|
17
|
+
* (typed, provider-routed — see guides/REMOTE_OPERATIONS_GUIDE.md), which wrap
|
|
18
|
+
* `SkillImportExportService` in `@memberjunction/ai-agents` server-side.
|
|
19
|
+
*/
|
|
20
|
+
export declare class AISkillSharingPanel extends BaseFormPanel<MJAISkillEntity> {
|
|
21
|
+
importFileInput: ElementRef<HTMLInputElement>;
|
|
22
|
+
PermissionsDialogVisible: boolean;
|
|
23
|
+
IsExporting: boolean;
|
|
24
|
+
IsImporting: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Whether the current user may manage this skill's permission grid (per-user / per-role
|
|
27
|
+
* View/Run/Edit/Delete on the skill). `BaseFormPanel` has no Provider input (the panel slot
|
|
28
|
+
* system doesn't thread one through yet), so this uses the global default provider —
|
|
29
|
+
* consistent with the rest of the not-yet-multi-provider-migrated panel system today.
|
|
30
|
+
*/
|
|
31
|
+
get CanShareSkills(): boolean;
|
|
32
|
+
get CanExportImport(): boolean;
|
|
33
|
+
OpenPermissionsDialog(): void;
|
|
34
|
+
OnPermissionsDialogClosed(): void;
|
|
35
|
+
ExportMarkdown(): Promise<void>;
|
|
36
|
+
/** Opens the hidden file input; the actual import happens in `OnImportFileSelected`. */
|
|
37
|
+
TriggerImport(): void;
|
|
38
|
+
OnImportFileSelected(event: Event): Promise<void>;
|
|
39
|
+
private downloadTextFile;
|
|
40
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AISkillSharingPanel, never>;
|
|
41
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AISkillSharingPanel, "mj-ai-skill-sharing-panel", never, {}, {}, never, never, false, never>;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=ai-skill-sharing-panel.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-skill-sharing-panel.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,UAAU,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;;AAUhE;;;;;;;;;;;;;;GAcG;AACH,qBAWa,mBAAoB,SAAQ,aAAa,CAAC,eAAe,CAAC;IACrC,eAAe,EAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAEtE,wBAAwB,UAAS;IAEjC,WAAW,UAAS;IACpB,WAAW,UAAS;IAE3B;;;;;OAKG;IACH,IAAW,cAAc,IAAI,OAAO,CAcnC;IAED,IAAW,eAAe,IAAI,OAAO,CAEpC;IAEM,qBAAqB,IAAI,IAAI;IAI7B,yBAAyB,IAAI,IAAI;IAI3B,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B5C,wFAAwF;IACjF,aAAa,IAAI,IAAI;IAIf,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAiD9D,OAAO,CAAC,gBAAgB;yCA3Hf,mBAAmB;2CAAnB,mBAAmB;CAoI/B"}
|