src/format/format.ps1xml

<?xml version="1.0" encoding="utf-8"?>

<!-- *******************************************************************
Copyright Adam Edwards
All Rights Reserved.
******************************************************************** -->

<Configuration>

  <ViewDefinitions>

    <View>
      <Name>ReplChatHistory</Name>
      <ViewSelectedBy>
        <TypeName>Modulus.ChatGPS.PowerShell.ChatHistory</TypeName>
      </ViewSelectedBy>

      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Width>24</Width>
            <Label>Received</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Width>12</Width>
            <Label>Role</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Width>1024</Width>
            <Label>Message</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <Wrap/>
            <TableColumnItems>
              <TableColumnItem>
                 <PropertyName>Received</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                 <PropertyName>Role</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                 <PropertyName>Response</PropertyName>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

    <View>
      <Name>ChatHistoryItem</Name>
      <ViewSelectedBy>
        <TypeName>Modulus.ChatGPS.Models.ChatMessage</TypeName>
      </ViewSelectedBy>

      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Width>24</Width>
            <Label>Received</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Width>10</Width>
            <Label>Role</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Width>12</Width>
            <Label>Elapsed (ms)</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Width>1024</Width>
            <Label>Response</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <Wrap/>
            <TableColumnItems>
              <TableColumnItem>
                <ScriptBlock>$_.Timestamp.DateTime</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                 <PropertyName>Role</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <Alignment>Right</Alignment>
                <ScriptBlock>if ( $_.Duration) {[Math]::Ceiling($_.Duration.TotalMilliseconds)}</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                 <PropertyName>Content</PropertyName>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

    <View>
      <Name>ChatMessageDetail</Name>
      <ViewSelectedBy>
        <TypeName>Modulus.ChatGPS.Models.ChatMessage</TypeName>
      </ViewSelectedBy>
      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem>
                <Label>Received</Label>
                <PropertyName>Timestamp</PropertyName>
              </ListItem>
              <ListItem>
                <PropertyName>Role</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Message</Label>
                <PropertyName>Content</PropertyName>
              </ListItem>
              <ListItem>
                <ItemSelectionCondition>
                  <ScriptBlock>$_.Duration</ScriptBlock>
                </ItemSelectionCondition>
                <Label>Elapsed</Label>
                <PropertyName>Duration</PropertyName>
              </ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>

    <View>
      <Name>ChatSessionSummary</Name>
      <ViewSelectedBy>
        <TypeName>Modulus.ChatGPS.Models.ChatSession</TypeName>
      </ViewSelectedBy>

      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>Info</Label>
          </TableColumnHeader>

          <TableColumnHeader>
            <Width>36</Width>
            <Label>Name</Label>
          </TableColumnHeader>

          <TableColumnHeader>
            <Label>Model</Label>
          </TableColumnHeader>

          <TableColumnHeader>
            <Label>Provider</Label>
          </TableColumnHeader>

          <TableColumnHeader>
            <Label>Count</Label>
          </TableColumnHeader>

        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <Wrap/>
            <TableColumnItems>

              <TableColumnItem>
                <ScriptBlock>(Get-Module ChatGPS).Invoke({param($session) $curid = GetCurrentSessionId; ( ($session.AllowAgentAccess ? '+' : ' ' ), ( $session.IsRemote ? 'r' : 'l'), ( $session.IsRemote ? ( $session.AccessValidated ? 'c' : 'd') : '-') , ( ( $session.exceededtokenLimitsizelist.count -gt 0 ) ? 'x' : ($session.History.Count -gt 1 ? 's' : '-') ), ( $session.id -eq $curid ? ' >' : ' ') ) -join ''}, @($_))</ScriptBlock>
              </TableColumnItem>

              <TableColumnItem>
                <ScriptBlock>$sessionName = (Get-Module ChatGPS).Invoke({param($id, $name) $id -eq ( GetCurrentSessionId ) ? (HighlightText $name 4) : $name},($_.id, $_.name)); if ( $sessionName ) { $sessionName } else { $sessionId = (Get-Module ChatGPS).Invoke({param($id) $id -eq ( GetCurrentSessionId ) ? (HighlightText $id 4) : $id},@($_.id)); '(' + $sessionId + ')' }</ScriptBlock>
              </TableColumnItem>

              <TableColumnItem>
                <ScriptBlock>(Get-Module ChatGPS).Invoke({param($session) $modelInfo = ( !! $session.AiOptions.ModelIdentifier ) ? $session.AiOptions.ModelIdentifier : $session.AiOptions.DeploymentName;$session.id -eq ( GetCurrentSessionId ) ? (HighlightText $modelInfo 4) : $modelInfo},@($_))</ScriptBlock>
              </TableColumnItem>

              <TableColumnItem>
                <ScriptBlock>(Get-Module ChatGPS).Invoke({param($session) $session.id -eq ( GetCurrentSessionId ) ? (HighlightText $session.AiOptions.Provider 4) : $session.AiOptions.Provider},@($_))</ScriptBlock>
              </TableColumnItem>

              <TableColumnItem>
                <ScriptBlock>if ( $_.History) { (Get-Module ChatGPS).Invoke({param($session) $session.id -eq ( GetCurrentSessionId ) ? (HighlightText $session.History.Count 4) : $session.History.Count},@($_)) }</ScriptBlock>
              </TableColumnItem>

            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

    <View>
      <Name>ChatSessionDetails</Name>
      <ViewSelectedBy>
        <TypeName>Modulus.ChatGPS.Models.ChatSession</TypeName>
      </ViewSelectedBy>

      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem>
                <Label>Id</Label>
                <PropertyName>Id</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Name</Label>
                <PropertyName>Name</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Provider</Label>
                <ScriptBlock>$_.AiOptions.Provider</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>IsRemote</Label>
                <PropertyName>IsRemote</PropertyName>
              </ListItem>
              <ListItem>
                <Label>ApiEndpoint</Label>
                <ItemSelectionCondition>
                  <ScriptBlock>$_.AiOptions.ApiEndpoint</ScriptBlock>
                </ItemSelectionCondition>
                <ScriptBlock>$_.AiOptions.ApiEndpoint</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>AllowInteractiveSignin</Label>
                <ItemSelectionCondition>
                  <ScriptBlock>$_.IsRemote</ScriptBlock>
                </ItemSelectionCondition>
                <PropertyName>AllowInteractiveSignin</PropertyName>
              </ListItem>
              <ListItem>
                <Label>AccessValidated</Label>
                <PropertyName>AccessValidated</PropertyName>
              </ListItem>
              <ListItem>
                <Label>AllowAgentAccess</Label>
                <PropertyName>AllowAgentAccess</PropertyName>
              </ListItem>
              <ListItem>
                <Label>LocalModelPath</Label>
                <ItemSelectionCondition>
                  <ScriptBlock>$_.AiOptions.LocalModelPath</ScriptBlock>
                </ItemSelectionCondition>
                <ScriptBlock>$_.AiOptions.LocalModelPath</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>TokenLimit</Label>
                <ScriptBlock>$_.AiOptions.TokenLimit</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>ModelIdentifier</Label>
                <ItemSelectionCondition>
                  <ScriptBlock>$_.AiOptions.ModelIdentifier</ScriptBlock>
                </ItemSelectionCondition>
                <ScriptBlock>$_.AiOptions.ModelIdentifier</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>DeploymentName</Label>
                <ItemSelectionCondition>
                  <ScriptBlock>$_.AiOptions.DeploymentName</ScriptBlock>
                </ItemSelectionCondition>
                <ScriptBlock>$_.AiOptions.DeploymentName</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>TotalMessageCount</Label>
                <ScriptBlock>if ( $_.History) {$_.History.Count}</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>CurrentMessageCount</Label>
                <ScriptBlock>if ( $_.History) {$_.CurrentHistory.Count}</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>HistoryContextLimit</Label>
                <PropertyName>HistoryContextLimit</PropertyName>
              </ListItem>
              <ListItem>
                <Label>LastResponseError</Label>
                <ItemSelectionCondition>
                  <ScriptBlock>$_.LastResponseError</ScriptBlock>
                </ItemSelectionCondition>
                <ScriptBlock>$_.LastResponseError</ScriptBlock>
              </ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>

    <View>
      <Name>ChatPluginSummary</Name>
      <ViewSelectedBy>
        <TypeName>Modulus.ChatGPS.Plugins.Plugin</TypeName>
      </ViewSelectedBy>

      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Width>24</Width>
            <Label>Name</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Width>40</Width>
            <Label>Description</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Parameters</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <Wrap/>
            <TableColumnItems>
              <TableColumnItem>
                 <PropertyName>Name</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>$provider = [Modulus.ChatGPS.Plugins.PluginProvider]::GetProviderByName($_.Name);$provider.Description</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                 <ScriptBlock>if ($_.Parameters) { $_.Parameters.Keys }</ScriptBlock>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

    <View>
      <Name>ChatPluginDetails</Name>
      <ViewSelectedBy>
        <TypeName>Modulus.ChatGPS.Plugins.Plugin</TypeName>
      </ViewSelectedBy>

      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem>
                <Label>Name</Label>
                <PropertyName>Name</PropertyName>
              </ListItem>
               <ListItem>
                <Label>Id</Label>
                <PropertyName>Id</PropertyName>
               </ListItem>
              <ListItem>
                <Label>Description</Label>
                <ScriptBlock>$provider = [Modulus.ChatGPS.Plugins.PluginProvider]::GetProviderByName($_.Name);$provider.Description</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>Parameters</Label>
                <ScriptBlock>if ($_.Parameters) { $_.Parameters.Keys }</ScriptBlock>
              </ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>

    </View>

    <View>
      <Name>ChatPluginProviderSummary</Name>
      <ViewSelectedBy>
        <TypeName>Modulus.ChatGPS.Plugins.PluginProvider</TypeName>
      </ViewSelectedBy>

      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Width>30</Width>
            <Label>Name</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Desciption</Label>
            <Width>40</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Parameters</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <Wrap/>
            <TableColumnItems>
              <TableColumnItem>
                 <PropertyName>Name</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                 <PropertyName>Description</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>if ( $_.Parameters ) { $_.Parameters.Name }</ScriptBlock>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

    <View>
      <Name>ChatPluginProviderDetails</Name>
      <ViewSelectedBy>
        <TypeName>Modulus.ChatGPS.Plugins.PluginProvider</TypeName>
      </ViewSelectedBy>

      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem>
                <Label>Name</Label>
                <PropertyName>Name</PropertyName>
              </ListItem>

              <ListItem>
                <Label>Description</Label>
                <PropertyName>Description</PropertyName>
              </ListItem>

              <ListItem>
                <Label>IsCustom</Label>
                <PropertyName>IsCustom</PropertyName>
              </ListItem>

              <ListItem>
                <Label>Parameters</Label>
                 <ScriptBlock>if ( $_.Parameters ) { $_.Parameters.Name }</ScriptBlock>
              </ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>

    </View>

    <View>
      <Name>ChatResponse</Name>
      <ViewSelectedBy>
        <TypeName>Modulus.ChatGPS.PowerShell.ChatResponse</TypeName>
      </ViewSelectedBy>

      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Width>24</Width>
            <Label>Received</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Width>1024</Width>
            <Label>Response</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <Wrap/>
            <TableColumnItems>
              <TableColumnItem>
                 <PropertyName>Received</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                 <PropertyName>Response</PropertyName>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

    <View>
      <Name>Voice</Name>
      <ViewSelectedBy>
        <TypeName>Modulus.ChatGPS.PowerShell.ChatVoice</TypeName>
      </ViewSelectedBy>

      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>VoiceName</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Synchronous</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <PropertyName>VoiceName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Synchronous</PropertyName>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

  </ViewDefinitions>
</Configuration>