@memberjunction/ng-core-entity-forms 6.2.0 → 6.3.0-edge.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/README.md +5 -6
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.d.ts.map +1 -1
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.js +3 -3
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.js.map +1 -1
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.d.ts +12 -0
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js +293 -230
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/add-action-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +11 -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 +862 -812
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +2 -2
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts +12 -0
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +821 -763
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js +2 -2
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts +10 -0
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +700 -605
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts +10 -0
- package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.js +223 -175
- package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.d.ts +10 -0
- package/dist/lib/custom/Actions/action-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.js +502 -453
- package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
- package/dist/lib/custom/Companies/company-header.panel.d.ts.map +1 -1
- package/dist/lib/custom/Companies/company-header.panel.js +3 -3
- package/dist/lib/custom/Companies/company-header.panel.js.map +1 -1
- package/dist/lib/custom/Conversations/conversation-header.panel.d.ts.map +1 -1
- package/dist/lib/custom/Conversations/conversation-header.panel.js +3 -3
- package/dist/lib/custom/Conversations/conversation-header.panel.js.map +1 -1
- package/dist/lib/custom/Employees/employee-header.panel.d.ts.map +1 -1
- package/dist/lib/custom/Employees/employee-header.panel.js +3 -3
- package/dist/lib/custom/Employees/employee-header.panel.js.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.d.ts +15 -0
- package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.js +836 -801
- package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
- package/dist/lib/custom/EntityActions/entityaction.form.component.js +2 -2
- package/dist/lib/custom/Files/file-form.component.js +2 -2
- package/dist/lib/custom/Lists/list-form.component.d.ts +5 -0
- package/dist/lib/custom/Lists/list-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Lists/list-form.component.js +355 -338
- package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
- package/dist/lib/custom/MLModels/ml-model-form.component.js +3 -3
- package/dist/lib/custom/MLModels/ml-model-form.component.js.map +1 -1
- package/dist/lib/custom/MLModels/ml-model-view-models.d.ts +17 -35
- package/dist/lib/custom/MLModels/ml-model-view-models.d.ts.map +1 -1
- package/dist/lib/custom/MLModels/ml-model-view-models.js +55 -54
- package/dist/lib/custom/MLModels/ml-model-view-models.js.map +1 -1
- package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts +7 -99
- package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts.map +1 -1
- package/dist/lib/custom/MLModels/ps-model-detail.component.js +124 -303
- package/dist/lib/custom/MLModels/ps-model-detail.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.d.ts +9 -0
- package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.js +493 -444
- package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-run-dialog.component.js +2 -2
- package/dist/lib/custom/Templates/template-param-dialog.component.js +2 -2
- package/dist/lib/custom/Templates/templates-form.component.d.ts +9 -0
- package/dist/lib/custom/Templates/templates-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Templates/templates-form.component.js +118 -74
- package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.d.ts +5 -0
- package/dist/lib/custom/Tests/test-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.js +471 -451
- package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-run-form.component.d.ts +5 -0
- package/dist/lib/custom/Tests/test-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-run-form.component.js +312 -289
- package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-suite-form.component.d.ts +5 -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 +697 -677
- package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts +5 -0
- package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-suite-run-form.component.js +453 -433
- package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
- package/dist/lib/custom/Users/user-header.panel.d.ts.map +1 -1
- package/dist/lib/custom/Users/user-header.panel.js +3 -3
- package/dist/lib/custom/Users/user-header.panel.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/agent-run-cost-split.d.ts +2 -2
- package/dist/lib/custom/ai-agent-run/agent-run-cost-split.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/agent-run-cost-split.js +30 -13
- package/dist/lib/custom/ai-agent-run/agent-run-cost-split.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +23 -0
- 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 +276 -216
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
- package/dist/lib/custom/custom-forms.module.d.ts +1 -1
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +7 -1
- package/dist/lib/custom/custom-forms.module.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 +32 -14
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js +119 -95
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJComment/mjcomment.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJComment/mjcomment.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJComment/mjcomment.form.component.js +124 -0
- package/dist/lib/generated/Entities/MJComment/mjcomment.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJCommentType/mjcommenttype.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJCommentType/mjcommenttype.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJCommentType/mjcommenttype.form.component.js +99 -0
- package/dist/lib/generated/Entities/MJCommentType/mjcommenttype.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJConversationType/mjconversationtype.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJConversationType/mjconversationtype.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJConversationType/mjconversationtype.form.component.js +95 -0
- package/dist/lib/generated/Entities/MJConversationType/mjconversationtype.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJDocumentSequenceCounter/mjdocumentsequencecounter.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJDocumentSequenceCounter/mjdocumentsequencecounter.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJDocumentSequenceCounter/mjdocumentsequencecounter.form.component.js +60 -0
- package/dist/lib/generated/Entities/MJDocumentSequenceCounter/mjdocumentsequencecounter.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +124 -106
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityFieldValue/mjentityfieldvalue.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntityFieldValue/mjentityfieldvalue.form.component.js +12 -4
- package/dist/lib/generated/Entities/MJEntityFieldValue/mjentityfieldvalue.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.js +19 -11
- package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityUniqueKey/mjentityuniquekey.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJEntityUniqueKey/mjentityuniquekey.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJEntityUniqueKey/mjentityuniquekey.form.component.js +62 -0
- package/dist/lib/generated/Entities/MJEntityUniqueKey/mjentityuniquekey.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.js +26 -12
- package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJFieldSuggestion/mjfieldsuggestion.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJFieldSuggestion/mjfieldsuggestion.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJFieldSuggestion/mjfieldsuggestion.form.component.js +140 -0
- package/dist/lib/generated/Entities/MJFieldSuggestion/mjfieldsuggestion.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 +69 -15
- 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 +31 -13
- package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMLEvaluationProtocol/mjmlevaluationprotocol.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLEvaluationProtocol/mjmlevaluationprotocol.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLEvaluationProtocol/mjmlevaluationprotocol.form.component.js +205 -0
- package/dist/lib/generated/Entities/MJMLEvaluationProtocol/mjmlevaluationprotocol.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.js +24 -6
- package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMLPredictionUnit/mjmlpredictionunit.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLPredictionUnit/mjmlpredictionunit.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLPredictionUnit/mjmlpredictionunit.form.component.js +173 -0
- package/dist/lib/generated/Entities/MJMLPredictionUnit/mjmlpredictionunit.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.js +46 -24
- package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.js +22 -14
- package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMLTrainingSnapshot/mjmltrainingsnapshot.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLTrainingSnapshot/mjmltrainingsnapshot.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLTrainingSnapshot/mjmltrainingsnapshot.form.component.js +175 -0
- package/dist/lib/generated/Entities/MJMLTrainingSnapshot/mjmltrainingsnapshot.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJQueryField/mjqueryfield.form.component.js +8 -6
- package/dist/lib/generated/Entities/MJQueryField/mjqueryfield.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 +44 -36
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTask/mjtask.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJTask/mjtask.form.component.js +54 -32
- package/dist/lib/generated/Entities/MJTask/mjtask.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +452 -443
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +27 -0
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/dist/lib/panels/feature-values/feature-values.panel.js +1 -1
- package/dist/lib/panels/feature-values/feature-values.panel.js.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.logic.js.map +1 -1
- package/dist/lib/shared/components/template-editor.component.js +2 -2
- package/dist/lib/shared/phone-hero.d.ts +17 -0
- package/dist/lib/shared/phone-hero.d.ts.map +1 -0
- package/dist/lib/shared/phone-hero.js +30 -0
- package/dist/lib/shared/phone-hero.js.map +1 -0
- package/dist/lib/shared/phone-sections-state.d.ts +28 -0
- package/dist/lib/shared/phone-sections-state.d.ts.map +1 -0
- package/dist/lib/shared/phone-sections-state.js +38 -0
- package/dist/lib/shared/phone-sections-state.js.map +1 -0
- package/package.json +50 -50
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-header.panel.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/Users/user-header.panel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAkB,MAAM,+BAA+B,CAAC;;AAI7E,
|
|
1
|
+
{"version":3,"file":"user-header.panel.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/Users/user-header.panel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAkB,MAAM,+BAA+B,CAAC;;AAI7E,qBAiGa,eAAgB,SAAQ,aAAa,CAAC,YAAY,CAAC;IACrD,WAAW,UAAS;IAEpB,QAAQ,IAAI,IAAI;IAKvB,IAAW,IAAI,IAAI,YAAY,GAAG,IAAI,CAErC;IAEM,eAAe,IAAI,IAAI;yCAZrB,eAAe;2CAAf,eAAe;CAgB3B"}
|
|
@@ -101,7 +101,7 @@ let UserHeaderPanel = class UserHeaderPanel extends BaseFormPanel {
|
|
|
101
101
|
i0.ɵɵconditionalCreate(0, UserHeaderPanel_Conditional_0_Template, 16, 9, "div", 0);
|
|
102
102
|
} if (rf & 2) {
|
|
103
103
|
i0.ɵɵconditional(ctx.User ? 0 : -1);
|
|
104
|
-
} }, dependencies: [CommonModule], styles: ["[_nghost-%COMP%] { display: block; width: 100%; }\n .mj-entity-hero-header[_ngcontent-%COMP%] {\n background: linear-gradient(180deg, var(--mj-bg-surface, #111a2e) 0%, var(--mj-bg-surface-card, #141f36) 100%);\n border-bottom: 1px solid var(--mj-border-default, #223254);\n padding: 16px 24px;\n }\n .mj-hero-top[_ngcontent-%COMP%] { display: flex; align-items: center; justify-content: space-between; gap: 16px; }\n .mj-hero-identity[_ngcontent-%COMP%] { display: flex; align-items: center; gap: 14px; }\n .mj-hero-avatar[_ngcontent-%COMP%] {\n width: 44px; height: 44px; border-radius: 10px;\n display: flex; align-items: center; justify-content: center;\n font-size: 18px; color: #fff; flex-shrink: 0;\n }\n .mj-hero-title[_ngcontent-%COMP%] { font-size: 18px; font-weight: 800; color: var(--mj-text-primary, #f8fafc); }\n .mj-hero-subline[_ngcontent-%COMP%] { font-size: 12.5px; color: var(--mj-text-secondary, #94a3b8); margin-top: 2px; display: flex; gap: 8px; align-items: center; }\n .mj-hero-toggle-btn[_ngcontent-%COMP%] {\n background: none; border: 1px solid var(--mj-border-default, #223254);\n color: var(--mj-text-muted, #64748b); border-radius: 6px;\n padding: 6px 10px; cursor: pointer;\n }\n .mj-hero-metrics-row[_ngcontent-%COMP%] {\n display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 12px; margin-top: 14px; padding-top: 12px;\n border-top: 1px solid rgba(255, 255, 255, 0.05);\n }\n .mj-hero-metric[_ngcontent-%COMP%] { display: flex; flex-direction: column; gap: 2px; }\n .mj-hero-metric-label[_ngcontent-%COMP%] { font-size: 10.5px; font-weight: 700; color: var(--mj-text-muted, #64748b); text-transform: uppercase; }\n .mj-hero-metric-val[_ngcontent-%COMP%] { font-size: 14px; font-weight: 700; color: var(--mj-text-primary, #f8fafc); font-family: monospace; }"], changeDetection: 0 }); }
|
|
104
|
+
} }, dependencies: [CommonModule], styles: ["[_nghost-%COMP%] { display: block; width: 100%; }\n .mj-entity-hero-header[_ngcontent-%COMP%] {\n background: linear-gradient(180deg, var(--mj-bg-surface, #111a2e) 0%, var(--mj-bg-surface-card, #141f36) 100%);\n border-bottom: 1px solid var(--mj-border-default, #223254);\n padding: 16px 24px;\n }\n .mj-hero-top[_ngcontent-%COMP%] { display: flex; align-items: center; justify-content: space-between; gap: 16px; }\n .mj-hero-identity[_ngcontent-%COMP%] { display: flex; align-items: center; gap: 14px; }\n \n\n .mj-hero-top[_ngcontent-%COMP%], .mj-hero-identity[_ngcontent-%COMP%], .mj-hero-identity[_ngcontent-%COMP%] > div[_ngcontent-%COMP%] { min-width: 0; }\n .mj-hero-identity[_ngcontent-%COMP%] { flex: 1 1 auto; }\n .mj-hero-title[_ngcontent-%COMP%] { overflow-wrap: anywhere; }\n .mj-hero-subline[_ngcontent-%COMP%], .mj-hero-metrics-row[_ngcontent-%COMP%] { flex-wrap: wrap; }\n .mj-hero-avatar[_ngcontent-%COMP%] {\n width: 44px; height: 44px; border-radius: 10px;\n display: flex; align-items: center; justify-content: center;\n font-size: 18px; color: #fff; flex-shrink: 0;\n }\n .mj-hero-title[_ngcontent-%COMP%] { font-size: 18px; font-weight: 800; color: var(--mj-text-primary, #f8fafc); }\n .mj-hero-subline[_ngcontent-%COMP%] { font-size: 12.5px; color: var(--mj-text-secondary, #94a3b8); margin-top: 2px; display: flex; gap: 8px; align-items: center; }\n .mj-hero-toggle-btn[_ngcontent-%COMP%] {\n background: none; border: 1px solid var(--mj-border-default, #223254);\n color: var(--mj-text-muted, #64748b); border-radius: 6px;\n padding: 6px 10px; cursor: pointer;\n }\n .mj-hero-metrics-row[_ngcontent-%COMP%] {\n display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 12px; margin-top: 14px; padding-top: 12px;\n border-top: 1px solid rgba(255, 255, 255, 0.05);\n }\n .mj-hero-metric[_ngcontent-%COMP%] { display: flex; flex-direction: column; gap: 2px; }\n .mj-hero-metric-label[_ngcontent-%COMP%] { font-size: 10.5px; font-weight: 700; color: var(--mj-text-muted, #64748b); text-transform: uppercase; }\n .mj-hero-metric-val[_ngcontent-%COMP%] { font-size: 14px; font-weight: 700; color: var(--mj-text-primary, #f8fafc); font-family: monospace; }"], changeDetection: 0 }); }
|
|
105
105
|
};
|
|
106
106
|
UserHeaderPanel = __decorate([
|
|
107
107
|
RegisterClassEx(BaseFormPanel, {
|
|
@@ -162,7 +162,7 @@ export { UserHeaderPanel };
|
|
|
162
162
|
}
|
|
163
163
|
</div>
|
|
164
164
|
}
|
|
165
|
-
`, styles: ["\n :host { display: block; width: 100%; }\n .mj-entity-hero-header {\n background: linear-gradient(180deg, var(--mj-bg-surface, #111a2e) 0%, var(--mj-bg-surface-card, #141f36) 100%);\n border-bottom: 1px solid var(--mj-border-default, #223254);\n padding: 16px 24px;\n }\n .mj-hero-top { display: flex; align-items: center; justify-content: space-between; gap: 16px; }\n .mj-hero-identity { display: flex; align-items: center; gap: 14px; }\n .mj-hero-avatar {\n width: 44px; height: 44px; border-radius: 10px;\n display: flex; align-items: center; justify-content: center;\n font-size: 18px; color: #fff; flex-shrink: 0;\n }\n .mj-hero-title { font-size: 18px; font-weight: 800; color: var(--mj-text-primary, #f8fafc); }\n .mj-hero-subline { font-size: 12.5px; color: var(--mj-text-secondary, #94a3b8); margin-top: 2px; display: flex; gap: 8px; align-items: center; }\n .mj-hero-toggle-btn {\n background: none; border: 1px solid var(--mj-border-default, #223254);\n color: var(--mj-text-muted, #64748b); border-radius: 6px;\n padding: 6px 10px; cursor: pointer;\n }\n .mj-hero-metrics-row {\n display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 12px; margin-top: 14px; padding-top: 12px;\n border-top: 1px solid rgba(255, 255, 255, 0.05);\n }\n .mj-hero-metric { display: flex; flex-direction: column; gap: 2px; }\n .mj-hero-metric-label { font-size: 10.5px; font-weight: 700; color: var(--mj-text-muted, #64748b); text-transform: uppercase; }\n .mj-hero-metric-val { font-size: 14px; font-weight: 700; color: var(--mj-text-primary, #f8fafc); font-family: monospace; }\n "] }]
|
|
165
|
+
`, styles: ["\n :host { display: block; width: 100%; }\n .mj-entity-hero-header {\n background: linear-gradient(180deg, var(--mj-bg-surface, #111a2e) 0%, var(--mj-bg-surface-card, #141f36) 100%);\n border-bottom: 1px solid var(--mj-border-default, #223254);\n padding: 16px 24px;\n }\n .mj-hero-top { display: flex; align-items: center; justify-content: space-between; gap: 16px; }\n .mj-hero-identity { display: flex; align-items: center; gap: 14px; }\n /* Let the identity column shrink so a long title (an email, say) wraps instead of pushing\n the toggle past the edge and making the panel column scroll sideways on a phone. */\n .mj-hero-top, .mj-hero-identity, .mj-hero-identity > div { min-width: 0; }\n .mj-hero-identity { flex: 1 1 auto; }\n .mj-hero-title { overflow-wrap: anywhere; }\n .mj-hero-subline, .mj-hero-metrics-row { flex-wrap: wrap; }\n .mj-hero-avatar {\n width: 44px; height: 44px; border-radius: 10px;\n display: flex; align-items: center; justify-content: center;\n font-size: 18px; color: #fff; flex-shrink: 0;\n }\n .mj-hero-title { font-size: 18px; font-weight: 800; color: var(--mj-text-primary, #f8fafc); }\n .mj-hero-subline { font-size: 12.5px; color: var(--mj-text-secondary, #94a3b8); margin-top: 2px; display: flex; gap: 8px; align-items: center; }\n .mj-hero-toggle-btn {\n background: none; border: 1px solid var(--mj-border-default, #223254);\n color: var(--mj-text-muted, #64748b); border-radius: 6px;\n padding: 6px 10px; cursor: pointer;\n }\n .mj-hero-metrics-row {\n display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 12px; margin-top: 14px; padding-top: 12px;\n border-top: 1px solid rgba(255, 255, 255, 0.05);\n }\n .mj-hero-metric { display: flex; flex-direction: column; gap: 2px; }\n .mj-hero-metric-label { font-size: 10.5px; font-weight: 700; color: var(--mj-text-muted, #64748b); text-transform: uppercase; }\n .mj-hero-metric-val { font-size: 14px; font-weight: 700; color: var(--mj-text-primary, #f8fafc); font-family: monospace; }\n "] }]
|
|
166
166
|
}], null, null); })();
|
|
167
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UserHeaderPanel, { className: "UserHeaderPanel", filePath: "src/lib/custom/Users/user-header.panel.ts", lineNumber:
|
|
167
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UserHeaderPanel, { className: "UserHeaderPanel", filePath: "src/lib/custom/Users/user-header.panel.ts", lineNumber: 106 }); })();
|
|
168
168
|
//# sourceMappingURL=user-header.panel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-header.panel.js","sourceRoot":"","sources":["../../../../src/lib/custom/Users/user-header.panel.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAgB,cAAc,EAAE,MAAM,+BAA+B,CAAC;;;IAkCzC,+BAAM;IAAA,sBAAC;IAAA,oBAAO;IACd,+BAAM;IAAA,YAAqB;IAAA,oBAAO;;;IAA5B,eAAqB;IAArB,iDAAqB;;;IAenC,AADJ,AADJ,kCAAiC,cACD,eACW;IAAA,uBAAO;IAAA,oBAAO;IACjD,mCAAiC;IAAA,YAA8B;IACnE,AADmE,oBAAO,EACpE;IAEF,AADJ,kCAA4B,eACW;IAAA,8BAAc;IAAA,oBAAO;IACxD,mCAAuF;IACnF,aACJ;IAER,AADI,AADI,oBAAO,EACL,EACJ;;;IARmC,eAA8B;IAA9B,oFAA8B;IAI9B,eAAqD;IAArD,qEAAqD;IAClF,cACJ;IADI,6EACJ;;;;IA/BJ,AADJ,AADJ,AADJ,iCAAmC,aACN,aACS,aACiE;IACvF,0BAAqC;IACzC,oBAAM;IAEF,AADJ,8BAAK,YACyB;IAAA,YAAsD;IAAA,oBAAK;IAEjF,AADJ,iCAA6B,WACnB;IAAA,aAAuB;IAAA,oBAAO;IACpC,uFAAiB;IAM7B,AADI,AADI,oBAAM,EACJ,EACJ;IAEF,AADJ,kCAA6B,iBACgH;IAAxF,uLAAS,wBAAiB,KAAC;IACxE,2BAAmG;IAG/G,AADI,AADI,oBAAS,EACP,EACJ;IAEN,mGAAoB;IAcxB,oBAAM;;;IA/BoC,eAAsD;IAAtD,oFAAsD;IAEtE,eAAuB;IAAvB,mDAAuB;IAC7B,cAGC;IAHD,4CAGC;IAKoE,eAA2D;IAA3D,mFAA2D;IAChH,cAAoC;IAAC,AAArC,oDAAoC,uCAAsC;IAK1G,cAaC;IAbD,+CAaC;;AA1DjB,MAAM,WAAW,GAAG,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"user-header.panel.js","sourceRoot":"","sources":["../../../../src/lib/custom/Users/user-header.panel.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RegisterClassEx } from '@memberjunction/global';\nimport { BaseFormPanel } from '@memberjunction/ng-base-forms';\nimport { MJUserEntity, UserInfoEngine } from '@memberjunction/core-entities';\n\nconst SETTING_KEY = 'mj.form.users.headerCollapsed';\n\n@RegisterClassEx(BaseFormPanel, {\n key: 'form-panel:MJ: Users:header',\n metadata: {\n entity: 'MJ: Users',\n // A hero is a bare strip in before-fields. Its sortKey is above the overview's\n // (higher draws first), so it draws above the overview cards.\n slot: 'before-fields',\n presentation: 'bare',\n contributionKey: 'users:header',\n sortKey: 20,\n },\n})\n@Component({\n selector: 'mj-user-header-panel',\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (User) {\n <div class=\"mj-entity-hero-header\">\n <div class=\"mj-hero-top\">\n <div class=\"mj-hero-identity\">\n <div class=\"mj-hero-avatar\" style=\"background: linear-gradient(135deg, #0ea5e9, #0369a1);\">\n <i class=\"fa-solid fa-user-gear\"></i>\n </div>\n <div>\n <h1 class=\"mj-hero-title\">{{ User.Name || User.Email || 'MemberJunction User' }}</h1>\n <div class=\"mj-hero-subline\">\n <span>Email: {{ User.Email }}</span>\n @if (User.Type) {\n <span>•</span>\n <span>Type: {{ User.Type }}</span>\n }\n </div>\n </div>\n </div>\n <div class=\"mj-hero-actions\">\n <button type=\"button\" class=\"mj-hero-toggle-btn\" (click)=\"ToggleCollapsed()\" [title]=\"IsCollapsed ? 'Expand Header' : 'Collapse Header'\">\n <i class=\"fa-solid\" [class.fa-chevron-up]=\"!IsCollapsed\" [class.fa-chevron-down]=\"IsCollapsed\"></i>\n </button>\n </div>\n </div>\n\n @if (!IsCollapsed) {\n <div class=\"mj-hero-metrics-row\">\n <div class=\"mj-hero-metric\">\n <span class=\"mj-hero-metric-label\">User ID</span>\n <span class=\"mj-hero-metric-val\">{{ User.ID?.substring(0, 8) }}</span>\n </div>\n <div class=\"mj-hero-metric\">\n <span class=\"mj-hero-metric-label\">Account Status</span>\n <span class=\"mj-hero-metric-val\" [style.color]=\"User.IsActive ? '#10b981' : '#f43f5e'\">\n {{ User.IsActive ? 'Active' : 'Inactive' }}\n </span>\n </div>\n </div>\n }\n </div>\n }\n `,\n styles: [`\n :host { display: block; width: 100%; }\n .mj-entity-hero-header {\n background: linear-gradient(180deg, var(--mj-bg-surface, #111a2e) 0%, var(--mj-bg-surface-card, #141f36) 100%);\n border-bottom: 1px solid var(--mj-border-default, #223254);\n padding: 16px 24px;\n }\n .mj-hero-top { display: flex; align-items: center; justify-content: space-between; gap: 16px; }\n .mj-hero-identity { display: flex; align-items: center; gap: 14px; }\n /* Let the identity column shrink so a long title (an email, say) wraps instead of pushing\n the toggle past the edge and making the panel column scroll sideways on a phone. */\n .mj-hero-top, .mj-hero-identity, .mj-hero-identity > div { min-width: 0; }\n .mj-hero-identity { flex: 1 1 auto; }\n .mj-hero-title { overflow-wrap: anywhere; }\n .mj-hero-subline, .mj-hero-metrics-row { flex-wrap: wrap; }\n .mj-hero-avatar {\n width: 44px; height: 44px; border-radius: 10px;\n display: flex; align-items: center; justify-content: center;\n font-size: 18px; color: #fff; flex-shrink: 0;\n }\n .mj-hero-title { font-size: 18px; font-weight: 800; color: var(--mj-text-primary, #f8fafc); }\n .mj-hero-subline { font-size: 12.5px; color: var(--mj-text-secondary, #94a3b8); margin-top: 2px; display: flex; gap: 8px; align-items: center; }\n .mj-hero-toggle-btn {\n background: none; border: 1px solid var(--mj-border-default, #223254);\n color: var(--mj-text-muted, #64748b); border-radius: 6px;\n padding: 6px 10px; cursor: pointer;\n }\n .mj-hero-metrics-row {\n display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 12px; margin-top: 14px; padding-top: 12px;\n border-top: 1px solid rgba(255, 255, 255, 0.05);\n }\n .mj-hero-metric { display: flex; flex-direction: column; gap: 2px; }\n .mj-hero-metric-label { font-size: 10.5px; font-weight: 700; color: var(--mj-text-muted, #64748b); text-transform: uppercase; }\n .mj-hero-metric-val { font-size: 14px; font-weight: 700; color: var(--mj-text-primary, #f8fafc); font-family: monospace; }\n `]\n})\nexport class UserHeaderPanel extends BaseFormPanel<MJUserEntity> {\n public IsCollapsed = false;\n\n public ngOnInit(): void {\n const raw = UserInfoEngine.Instance.GetSetting(SETTING_KEY);\n if (raw) this.IsCollapsed = raw === 'true';\n }\n\n public get User(): MJUserEntity | null {\n return this.Record;\n }\n\n public ToggleCollapsed(): void {\n this.IsCollapsed = !this.IsCollapsed;\n UserInfoEngine.Instance.SetSettingDebounced(SETTING_KEY, String(this.IsCollapsed));\n }\n}\n"]}
|
|
@@ -15,9 +15,9 @@ export type PromptRunCostSplitFields = {
|
|
|
15
15
|
};
|
|
16
16
|
/** One run's share of the cost card. */
|
|
17
17
|
export interface PromptRunCostSplit {
|
|
18
|
-
/** Uncached input, cache reads and cache writes, each at its own rate. */
|
|
18
|
+
/** Uncached input, cache reads and cache writes, each at its own rate, plus the input audio line's cost. */
|
|
19
19
|
InputCost: number;
|
|
20
|
-
/** The output tokens the cost row priced, at the output rate. */
|
|
20
|
+
/** The output tokens the cost row priced, at the output rate, plus the output audio line's cost. */
|
|
21
21
|
OutputCost: number;
|
|
22
22
|
/** What caching saved against pricing every input token at the full input rate. */
|
|
23
23
|
Savings: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-run-cost-split.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/ai-agent-run/agent-run-cost-split.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent-run-cost-split.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/ai-agent-run/agent-run-cost-split.ts"],"names":[],"mappings":"AAsBA,6DAA6D;AAC7D,MAAM,WAAW,mBAAmB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED,+EAA+E;AAC/E,MAAM,MAAM,wBAAwB,GAAG;IACnC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,4BAA4B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChD,CAAC;AAEF,wCAAwC;AACxC,MAAM,WAAW,kBAAkB;IAC/B,4GAA4G;IAC5G,SAAS,EAAE,MAAM,CAAC;IAClB,oGAAoG;IACpG,UAAU,EAAE,MAAM,CAAC;IACnB,mFAAmF;IACnF,OAAO,EAAE,MAAM,CAAC;IAChB,wFAAwF;IACxF,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,mBAAmB,GAAG,kBAAkB,CA4B/G"}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The input / output / avatar video split of one prompt run's cost, for the agent-run analytics cost card.
|
|
3
3
|
*
|
|
4
|
-
* The card prices input and output from the run's cost row, per token. A realtime run
|
|
5
|
-
*
|
|
6
|
-
* the
|
|
7
|
-
*
|
|
8
|
-
* prices only the
|
|
4
|
+
* The card prices input and output from the run's cost row, per token. A realtime run may be priced in several lines
|
|
5
|
+
* (written into its details as `CostLines` when it was priced): the cost row over its tokens, less the output tokens
|
|
6
|
+
* the provider counted as video and the audio tokens priced at an audio rate, plus a line per audio direction and the
|
|
7
|
+
* avatar video line. Pricing every token at the row's rates would disagree with the run's `Cost`; so when the run has
|
|
8
|
+
* lines beyond the default one, the split prices only the tokens the default line priced, adds each audio line's cost
|
|
9
|
+
* to its direction (input or output), and reads the video line's cost as it is.
|
|
10
|
+
*
|
|
11
|
+
* A realtime run's cache hits sit in its record (`RealtimeUsage.Input.CachedTokens`), not in `TokensCacheRead`; the
|
|
12
|
+
* split moves them to the cache-read bucket with the rule pricing uses (`MoveCachedInputTokens`).
|
|
9
13
|
*/
|
|
10
|
-
import { AVATAR_VIDEO_COST_LINE_MODALITY, ReadCostLines } from '@memberjunction/ai-engine-base';
|
|
14
|
+
import { AUDIO_COST_LINE_MODALITY, AVATAR_VIDEO_COST_LINE_MODALITY, MoveCachedInputTokens, ReadCostLines, ReadRealtimeUsageRecord, } from '@memberjunction/ai-engine-base';
|
|
11
15
|
/**
|
|
12
16
|
* Splits one prompt run's cost into input, output and avatar video.
|
|
13
17
|
*
|
|
@@ -18,14 +22,27 @@ export function SplitPromptRunCost(run, rate) {
|
|
|
18
22
|
const lines = ReadCostLines(run.ModelSpecificResponseDetails);
|
|
19
23
|
const defaultLine = lines.find((line) => line.Modality === null);
|
|
20
24
|
const videoLines = lines.filter((line) => line.Modality === AVATAR_VIDEO_COST_LINE_MODALITY);
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
25
|
+
const audioLines = lines.filter((line) => line.Modality === AUDIO_COST_LINE_MODALITY);
|
|
26
|
+
const columns = {
|
|
27
|
+
input: run.TokensPrompt ?? 0,
|
|
28
|
+
output: run.TokensCompletion ?? 0,
|
|
29
|
+
cacheRead: run.TokensCacheRead ?? 0,
|
|
30
|
+
cacheWrite: run.TokensCacheWrite ?? 0,
|
|
31
|
+
};
|
|
32
|
+
// Only a run priced with cost lines had its cache hits moved; a run without them was priced from its columns.
|
|
33
|
+
const usage = defaultLine ? MoveCachedInputTokens(columns, ReadRealtimeUsageRecord(run.ModelSpecificResponseDetails)).Usage : columns;
|
|
34
|
+
const cacheReadTokens = usage.cacheRead ?? 0;
|
|
35
|
+
const cacheWriteTokens = usage.cacheWrite ?? 0;
|
|
36
|
+
const audioInputTokens = audioLines.reduce((total, line) => total + line.Input, 0);
|
|
37
|
+
const hasSplitLines = videoLines.length > 0 || audioLines.length > 0;
|
|
38
|
+
// Without a video or audio line every token was priced at the row's rates, as it always was.
|
|
39
|
+
const inputTokens = hasSplitLines ? Math.max(0, usage.input - audioInputTokens) : usage.input;
|
|
40
|
+
const outputTokens = hasSplitLines && defaultLine ? defaultLine.Output : usage.output;
|
|
41
|
+
const audioInputCost = audioLines.reduce((total, line) => total + (line.Input > 0 ? line.Cost : 0), 0);
|
|
42
|
+
const audioOutputCost = audioLines.reduce((total, line) => total + (line.Input > 0 ? 0 : line.Cost), 0);
|
|
26
43
|
return {
|
|
27
|
-
InputCost: inputTokens * rate.InputRate + cacheReadTokens * rate.CacheReadRate + cacheWriteTokens * rate.CacheWriteRate,
|
|
28
|
-
OutputCost: outputTokens * rate.OutputRate,
|
|
44
|
+
InputCost: inputTokens * rate.InputRate + cacheReadTokens * rate.CacheReadRate + cacheWriteTokens * rate.CacheWriteRate + audioInputCost,
|
|
45
|
+
OutputCost: outputTokens * rate.OutputRate + audioOutputCost,
|
|
29
46
|
Savings: cacheReadTokens * (rate.InputRate - rate.CacheReadRate) + cacheWriteTokens * (rate.InputRate - rate.CacheWriteRate),
|
|
30
47
|
AvatarVideoCost: videoLines.reduce((total, line) => total + line.Cost, 0),
|
|
31
48
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-run-cost-split.js","sourceRoot":"","sources":["../../../../src/lib/custom/ai-agent-run/agent-run-cost-split.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"agent-run-cost-split.js","sourceRoot":"","sources":["../../../../src/lib/custom/ai-agent-run/agent-run-cost-split.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * The input / output / avatar video split of one prompt run's cost, for the agent-run analytics cost card.\n *\n * The card prices input and output from the run's cost row, per token. A realtime run may be priced in several lines\n * (written into its details as `CostLines` when it was priced): the cost row over its tokens, less the output tokens\n * the provider counted as video and the audio tokens priced at an audio rate, plus a line per audio direction and the\n * avatar video line. Pricing every token at the row's rates would disagree with the run's `Cost`; so when the run has\n * lines beyond the default one, the split prices only the tokens the default line priced, adds each audio line's cost\n * to its direction (input or output), and reads the video line's cost as it is.\n *\n * A realtime run's cache hits sit in its record (`RealtimeUsage.Input.CachedTokens`), not in `TokensCacheRead`; the\n * split moves them to the cache-read bucket with the rule pricing uses (`MoveCachedInputTokens`).\n */\nimport {\n AUDIO_COST_LINE_MODALITY,\n AVATAR_VIDEO_COST_LINE_MODALITY,\n MoveCachedInputTokens,\n ReadCostLines,\n ReadRealtimeUsageRecord,\n type NormalizedUsage,\n} from '@memberjunction/ai-engine-base';\n\n/** A model + vendor's token rates, in currency per token. */\nexport interface PromptRunTokenRates {\n InputRate: number;\n OutputRate: number;\n CacheReadRate: number;\n CacheWriteRate: number;\n}\n\n/** The prompt run fields the split reads. Deliberately not the full entity. */\nexport type PromptRunCostSplitFields = {\n TokensPrompt?: number | null;\n TokensCompletion?: number | null;\n TokensCacheRead?: number | null;\n TokensCacheWrite?: number | null;\n ModelSpecificResponseDetails?: string | null;\n};\n\n/** One run's share of the cost card. */\nexport interface PromptRunCostSplit {\n /** Uncached input, cache reads and cache writes, each at its own rate, plus the input audio line's cost. */\n InputCost: number;\n /** The output tokens the cost row priced, at the output rate, plus the output audio line's cost. */\n OutputCost: number;\n /** What caching saved against pricing every input token at the full input rate. */\n Savings: number;\n /** The avatar video line's cost, from the run's cost lines; 0 for a run without one. */\n AvatarVideoCost: number;\n}\n\n/**\n * Splits one prompt run's cost into input, output and avatar video.\n *\n * @param run The prompt run's token columns and details.\n * @param rate Its model + vendor's token rates.\n */\nexport function SplitPromptRunCost(run: PromptRunCostSplitFields, rate: PromptRunTokenRates): PromptRunCostSplit {\n const lines = ReadCostLines(run.ModelSpecificResponseDetails);\n const defaultLine = lines.find((line) => line.Modality === null);\n const videoLines = lines.filter((line) => line.Modality === AVATAR_VIDEO_COST_LINE_MODALITY);\n const audioLines = lines.filter((line) => line.Modality === AUDIO_COST_LINE_MODALITY);\n const columns: NormalizedUsage = {\n input: run.TokensPrompt ?? 0,\n output: run.TokensCompletion ?? 0,\n cacheRead: run.TokensCacheRead ?? 0,\n cacheWrite: run.TokensCacheWrite ?? 0,\n };\n // Only a run priced with cost lines had its cache hits moved; a run without them was priced from its columns.\n const usage = defaultLine ? MoveCachedInputTokens(columns, ReadRealtimeUsageRecord(run.ModelSpecificResponseDetails)).Usage : columns;\n const cacheReadTokens = usage.cacheRead ?? 0;\n const cacheWriteTokens = usage.cacheWrite ?? 0;\n const audioInputTokens = audioLines.reduce((total, line) => total + line.Input, 0);\n const hasSplitLines = videoLines.length > 0 || audioLines.length > 0;\n // Without a video or audio line every token was priced at the row's rates, as it always was.\n const inputTokens = hasSplitLines ? Math.max(0, usage.input - audioInputTokens) : usage.input;\n const outputTokens = hasSplitLines && defaultLine ? defaultLine.Output : usage.output;\n const audioInputCost = audioLines.reduce((total, line) => total + (line.Input > 0 ? line.Cost : 0), 0);\n const audioOutputCost = audioLines.reduce((total, line) => total + (line.Input > 0 ? 0 : line.Cost), 0);\n return {\n InputCost: inputTokens * rate.InputRate + cacheReadTokens * rate.CacheReadRate + cacheWriteTokens * rate.CacheWriteRate + audioInputCost,\n OutputCost: outputTokens * rate.OutputRate + audioOutputCost,\n Savings: cacheReadTokens * (rate.InputRate - rate.CacheReadRate) + cacheWriteTokens * (rate.InputRate - rate.CacheWriteRate),\n AvatarVideoCost: videoLines.reduce((total, line) => total + line.Cost, 0),\n };\n}\n"]}
|
|
@@ -6,6 +6,7 @@ import { ParseJSONRecursive } from '@memberjunction/global';
|
|
|
6
6
|
import { AIAgentRunAnalyticsComponent } from './ai-agent-run-analytics.component';
|
|
7
7
|
import { AgentRunCostMetrics } from './ai-agent-run-cost.service';
|
|
8
8
|
import { AIAgentRunDataHelper } from './ai-agent-run-data.service';
|
|
9
|
+
import { SectionPickerItem } from '@memberjunction/ng-ui-components';
|
|
9
10
|
import * as i0 from "@angular/core";
|
|
10
11
|
export declare class MJAIAgentRunFormComponentExtended extends MJAIAgentRunFormComponent implements OnInit, OnDestroy {
|
|
11
12
|
record: MJAIAgentRunEntityExtended;
|
|
@@ -15,6 +16,28 @@ export declare class MJAIAgentRunFormComponentExtended extends MJAIAgentRunFormC
|
|
|
15
16
|
/** Pending re-read of the run tree while a detached workflow is still running. */
|
|
16
17
|
private workflowPollTimer;
|
|
17
18
|
ActiveTab: string;
|
|
19
|
+
/** Phone-width viewport, decided once at init. Visualization and Analytics are desktop views. */
|
|
20
|
+
IsPhone: boolean;
|
|
21
|
+
/** The timeline's detail pane sits beside the list on desktop and under it on a phone. */
|
|
22
|
+
get TimelineSplitDirection(): 'horizontal' | 'vertical';
|
|
23
|
+
/** The views that work at phone width, as `mj-section-picker` items. */
|
|
24
|
+
get SectionPickerItems(): SectionPickerItem[];
|
|
25
|
+
/** A pick from the phone section sheet; only the phone views are accepted. */
|
|
26
|
+
OnSectionPicked(key: string): void;
|
|
27
|
+
/**
|
|
28
|
+
* Phone defaults, applied at init and whenever the breakpoint is crossed: a run on Visualization or Analytics opens
|
|
29
|
+
* on the timeline instead, since those are desktop views (pan, zoom, charts).
|
|
30
|
+
*/
|
|
31
|
+
ApplyPhoneDefaults(isPhone: boolean): void;
|
|
32
|
+
/** Stops following the breakpoint; set at init, called from ngOnDestroy. */
|
|
33
|
+
private stopPhoneWatch;
|
|
34
|
+
/**
|
|
35
|
+
* Re-reads the breakpoint and re-applies the phone defaults, so rotating a tablet or resizing
|
|
36
|
+
* below 768px on Visualization or Analytics lands on the timeline the picker names.
|
|
37
|
+
*/
|
|
38
|
+
SyncPhoneViewport(): void;
|
|
39
|
+
/** Copies this run's URL so it can be opened on a desktop. */
|
|
40
|
+
CopyPageLink(): Promise<void>;
|
|
18
41
|
/** @deprecated Use {@link ActiveTab}. */
|
|
19
42
|
get activeTab(): string;
|
|
20
43
|
/** @deprecated Use {@link ActiveTab}. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-agent-run.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/ai-agent-run/ai-agent-run.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAqB,MAAM,eAAe,CAAC;AAGhF,OAAO,EAGH,0BAA0B,EAC1B,uBAAuB,EAEvB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAErB,MAAM,8BAA8B,CAAC;AAMtC,OAAO,EAAE,YAAY,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAC9F,OAAO,EAAE,yBAAyB,EAAE,MAAM,mEAAmE,CAAC;AAC9G,OAAO,EAAE,kBAAkB,EAAoB,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,EAAyB,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;;
|
|
1
|
+
{"version":3,"file":"ai-agent-run.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/ai-agent-run/ai-agent-run.component.ts"],"names":[],"mappings":"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"}
|