{"version":3,"file":"xxmachina-components-templates-agent.mjs","sources":["../../../../../packages/@xxmachina/components/src/lib/templates/agent/agent-messages.ts","../../../../../packages/@xxmachina/components/src/lib/templates/agent/agent.template.ts","../../../../../packages/@xxmachina/components/src/lib/templates/agent/xxmachina-components-templates-agent.ts"],"sourcesContent":["import chalk from 'chalk';\n\n/**\n * コアメッセージ（共通部分）\n */\nconst CORE_MESSAGE = `${chalk.cyan('● What is Plan X?')}\n  Plan X is a modern WebRTC-based session manager, an alternative to SSH and Tmux.\n  Connect any machine worldwide with a single command and deploy AI agents anywhere.\n\n${chalk.cyan(`● Vision: ${chalk.bold.yellow('\"The Planet is the Computer\"')}`)}\n  Building a planetary-scale operating system\n  AI agents autonomously optimize distributed systems\n\n${chalk.cyan('● Agentic Shell')}\n  Unified interface to distributed resources\n  Express your intent in natural language, AI plans the execution\n\n${chalk.cyan('● Meta-Kernel')}\n  Distributed abstraction layer running on top of existing OSes (Linux/Mac/Win)\n  Just as kernels abstract hardware, Plan X abstracts the network\n\n${chalk.cyan('● Autopoiesis')}\n  Self-improving, self-sustaining, self-replicating living system\n  Agents evolve themselves and spawn new agents`;\n\n/**\n * ウェルカムメッセージ（起動時に表示）\n */\nexport const WELCOME_MESSAGE = `${chalk.cyan(`● Welcome to ${chalk.bold.yellow('Plan X')}`)}\n\n${CORE_MESSAGE}\n\n${chalk.gray('powered by Plan X Agent LLC.')}\n`;\n\n/**\n * aboutコマンドのメッセージ\n */\nexport const ABOUT_MESSAGE = `${chalk.bold.cyan('● Plan X - OS for the LLM Era')}\n\n${CORE_MESSAGE}\n\n${chalk.cyan('● QTP/ATC Patterns')}\n  Query-Transformer-Presenter: Retrieve information\n  Action-Transformer-Command: Execute actions\n  New interaction model replacing stdio\n\n${chalk.cyan('● Learn More')}\n  Sign in to access more features\n\n${chalk.gray('powered by Plan X Agent LLC.')}`;\n","import { ChangeDetectionStrategy, Component, inject, ChangeDetectorRef, ElementRef, AfterViewInit, Provider, viewChild, computed, HostListener, input } from '@angular/core';\nimport { NgAtomicComponent, provideComponent } from '@ng-atomic/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { AutoLayoutFrame } from '@ng-atomic/components/frames/auto-layout';\nimport { CardFrame } from '@ng-atomic/components/frames/card';\nimport { ScrollFrame } from '@ng-atomic/components/frames/scroll';\nimport { ActionButtonsSectionOrganism } from '@ng-atomic/components/organisms/action-buttons-section';\nimport { HeadingOrganism } from '@ng-atomic/components/organisms/heading';\nimport { NgAtomicFormSectionBuilder } from '@ng-atomic/components/templates/form';\nimport { EntranceTemplateStore } from '@ng-atomic/components/templates/entrance';\nimport { AppService } from '@ng-atomic/common/services/app';\nimport { injectAuthState } from '@ng-atomic/common/services/auth';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { Terminal } from '@xterm/xterm';\nimport { XtermOrganism, svgToSixel } from '@xxmachina/components/organisms/xterm';\nimport { NavigatorOrganismStore } from '@ng-atomic/components/organisms/navigator';\nimport chalk from 'chalk';\nimport { WELCOME_MESSAGE, ABOUT_MESSAGE } from './agent-messages';\n\n\nenum ActionId {\n  SIGN_IN = '[@ng-atomic/components] Sign In',\n  SIGN_IN_WITH_GOOGLE = '[@ng-atomic/components] Sign In With Google',\n  SIGN_IN_WITH_TWITTER = '[@ng-atomic/components] Sign In With Twitter',\n  SIGN_OUT = '[@ng-atomic/components] Sign Out',\n  NAVIGATE = '[@ng-atomic/components] Navigate',\n}\n\n@Component({\n  selector: 'templates-agent',\n  imports: [\n    FormsModule,\n    AutoLayoutFrame,\n    CardFrame,\n    ScrollFrame,\n    ActionButtonsSectionOrganism,\n    HeadingOrganism,\n    NgAtomicFormSectionBuilder,\n    MatButtonModule,\n    MatIconModule,\n    MatTooltipModule,\n    XtermOrganism,\n    NavigatorOrganismStore\n],\n  template: `\n  <frames-scroll class=\"terminal-window\">\n    <organisms-navigator top injectable class=\"terminal-header\"\n      [startActions]=\"navStartActions()\"\n      [endActions]=\"endActions()\"\n      (action)=\"onNavAction($event)\"\n    >MACHINA</organisms-navigator>\n\n    <organisms-xterm\n      class=\"terminal-display\"\n      (terminalReady)=\"onTerminalReady($event)\"\n      (githubLinkClick)=\"onGitHubLinkClick($event)\"\n      (click)=\"focusInput()\"\n      #xtermComponent\n    />\n\n    <div bottom class=\"input-area\">\n      <div class=\"input-line\">\n        <span class=\"input-prefix\">></span>\n        <div class=\"textarea-wrapper\">\n          <span class=\"arrow-prefix\">></span>\n          <div class=\"input-container\">\n            <textarea\n              #inputField\n              class=\"terminal-input\"\n              [(ngModel)]=\"currentInput\"\n              (keydown.enter)=\"handleEnter($event)\"\n              (keydown.arrowUp)=\"navigateHistory($event, -1)\"\n              (keydown.arrowDown)=\"navigateHistory($event, 1)\"\n              (keydown.control.k)=\"generateCommand($event)\"\n              (keydown.meta.k)=\"generateCommand($event)\"\n              (keydown)=\"preventPrefixDeletion($event)\"\n              (input)=\"handleInput($event)\"\n              (focus)=\"handleFocus()\"\n              (blur)=\"handleBlur()\"\n              (keyup)=\"updateCursorPosition()\"\n              (click)=\"updateCursorPosition()\"\n              (scroll)=\"updateCursorPosition()\"\n              [disabled]=\"isProcessing\"\n              placeholder=\"Type a command...\"\n              rows=\"1\"\n            ></textarea>\n            <div class=\"block-cursor\"\n              [class.visible]=\"showCursor\"\n              [style.left.px]=\"cursorLeft\"\n              [style.top.px]=\"cursorTop\"\n            ></div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </frames-scroll>\n  `,\n  styleUrls: ['./agent.template.scss'],\n  host: {\n    class: 'template'\n  },\n  changeDetection: ChangeDetectionStrategy.Default,\n  hostDirectives: [\n    {\n      directive: EntranceTemplateStore,\n      inputs: [\n        'form',\n        'actions',\n        'title',\n        'fieldMap',\n      ],\n    },\n  ]\n})\nexport class AgentTemplate extends NgAtomicComponent implements AfterViewInit {\n  static ActionId = ActionId;\n  protected ActionId = ActionId;\n  protected store = inject(EntranceTemplateStore);\n  private cdr = inject(ChangeDetectorRef);\n  private app = inject(AppService);\n\n  // 認証状態のチェック（非ログイン時は閉じるボタンを非表示）\n  private readonly authState = injectAuthState();\n  protected readonly isLoggedIn = computed(() => !!this.authState());\n\n  readonly endActions = input<any[]>([]);\n\n  protected navStartActions = computed(() => {\n    if (!this.isLoggedIn()) return [];\n    return [{ id: 'close-side-app', icon: 'close', name: '閉じる' }];\n  });\n\n  readonly xtermComponent = viewChild<XtermOrganism>('xtermComponent');\n  readonly inputField = viewChild<ElementRef<HTMLTextAreaElement>>('inputField');\n\n  protected statusText = 'Ready';\n  protected isProcessing = false;\n  protected showCursor = false;\n  protected cursorLeft = 60;\n  protected cursorTop = 12;\n\n  // xterm関連\n  private terminal!: Terminal;\n  private commandHistory: string[] = [];\n  private historyIndex = -1;\n  \n  // 入力管理\n  protected currentInput = '';\n\n  ngAfterViewInit() {\n    // 入力フィールドにフォーカス\n    setTimeout(() => {\n      const textarea = this.inputField()?.nativeElement;\n      if (textarea) {\n        textarea.focus();\n        // 初期高さを適切に設定\n        this.adjustTextareaHeight();\n      }\n    }, 100);\n  }\n\n  @HostListener('window:resize')\n  onWindowResize() {\n    // ウィンドウリサイズ時にターミナルをフィット\n    this.xtermComponent()?.fit();\n  }\n\n  onTerminalReady(terminal: Terminal) {\n    this.terminal = terminal;\n\n    // 初期化時にターミナルをコンテナサイズにフィット\n    setTimeout(() => {\n      this.xtermComponent()?.fit();\n    }, 50);\n\n    // 初期メッセージの表示\n    this.showWelcomeMessage();\n\n    // 初回ロード時は最上部にスクロール（アスキーアートから見えるように）\n    setTimeout(() => {\n      this.terminal.scrollToTop();\n    }, 100);\n\n    // 入力フィールドにフォーカスと高さ調整\n    const textarea = this.inputField()?.nativeElement;\n    if (textarea) {\n      textarea.focus();\n      this.adjustTextareaHeight();\n    }\n  }\n\n  onGitHubLinkClick(issueNumber: number) {\n    const url = `https://github.com/nontangent/x_x_machina/issues/${issueNumber}`;\n    window.open(url, '_blank');\n  }\n\n  private async showWelcomeMessage() {\n    this.terminal.writeln('');\n\n    // assetsからSVGを読み込んでSIXELフォーマットで表示\n    try {\n      const response = await fetch('/assets/machina-ascii-art.svg');\n      const svgString = await response.text();\n      const sixelData = await svgToSixel(svgString, { width: 400, height: 130 });\n      this.terminal.write(sixelData);\n      this.terminal.writeln('');\n    } catch (error) {\n      console.warn('SIXEL logo display failed, using ASCII fallback:', error);\n      // フォールバック: ASCII artでX_Xロゴを表示\n      this.terminal.writeln(`${chalk.cyan('  ██╗  ██╗    ██╗  ██╗')}`);\n      this.terminal.writeln(`${chalk.cyan('   ╚██╗██╔╝    ╚██╗██╔╝ ')}`);\n      this.terminal.writeln(`${chalk.cyan('    ╚███╔╝      ╚███╔╝  ')}`);\n      this.terminal.writeln(`${chalk.cyan('    ██╔██╗      ██╔██╗  ')}`);\n      this.terminal.writeln(`${chalk.cyan('   ██╔╝ ██╗    ██╔╝ ██╗ ')}`);\n      this.terminal.writeln(`${chalk.cyan('   ╚═╝  ╚═╝    ╚═╝  ╚═╝ ')}`);\n    }\n    this.terminal.writeln('');\n\n    // ウェルカムメッセージを表示\n    WELCOME_MESSAGE.split('\\n').forEach(line => this.terminal.writeln(line));\n\n    this.terminal.writeln('');\n    this.terminal.writeln(`${chalk.cyan('● Type \\x1b[1;36mlogin\\x1b[1;33m to sign in with Google\\x1b[0m')}`);\n    this.terminal.writeln(`${chalk.cyan('● Type \\x1b[1;36mhelp\\x1b[1;33m for more commands\\x1b[0m')}`);\n    this.terminal.writeln('');\n\n    // プロンプト表示\n    this.showPrompt();\n  }\n\n\n  private showPrompt() {\n    // プロンプトはHTML側の入力フィールドで表示するため不要\n  }\n\n  private processCommand(command: string) {\n    this.isProcessing = true;\n    this.statusText = 'Processing...';\n    this.cdr.markForCheck();\n\n    // ログインコマンド\n    if (command === 'login') {\n      this.terminal.writeln('\\x1b[1;32m● Initiating Google authentication...\\x1b[0m');\n      setTimeout(() => {\n        this.dispatch({ id: ActionId.SIGN_IN_WITH_GOOGLE });\n        this.completeProcessing();\n      }, 300);\n    }\n    else if (command.startsWith('auth')) {\n      if (command.includes('google')) {\n        this.terminal.writeln('\\x1b[1;32m● Initiating Google authentication...\\x1b[0m');\n        setTimeout(() => {\n          this.dispatch({ id: ActionId.SIGN_IN_WITH_GOOGLE });\n          this.completeProcessing();\n        }, 300);\n      } else if (command.includes('twitter')) {\n        this.terminal.writeln('\\x1b[1;32m● Initiating Twitter authentication...\\x1b[0m');\n        setTimeout(() => {\n          this.dispatch({ id: ActionId.SIGN_IN_WITH_TWITTER });\n          this.completeProcessing();\n        }, 300);\n      } else if (command.includes('local')) {\n        this.terminal.writeln('\\x1b[1;32m● Initiating local authentication...\\x1b[0m');\n        setTimeout(() => {\n          this.dispatch({ id: ActionId.SIGN_IN });\n          this.completeProcessing();\n        }, 300);\n      } else {\n        this.terminal.writeln('\\x1b[1;32m● Available authentication methods:\\x1b[0m');\n        this.terminal.writeln('  - auth --provider=google');\n        this.terminal.writeln('  - auth --provider=twitter');\n        this.terminal.writeln('  - auth --provider=local');\n        this.completeProcessing();\n      }\n    }\n    // ログアウトコマンド\n    else if (command === 'logout' || command === 'signout') {\n      this.terminal.writeln('\\x1b[1;32m● Signing out...\\x1b[0m');\n      setTimeout(() => {\n        this.dispatch({ id: ActionId.SIGN_OUT });\n        setTimeout(() => {\n          this.terminal.writeln('\\x1b[1;32m● You have been signed out.\\x1b[0m');\n          this.terminal.writeln('\\x1b[1;33m● Type \"login\" to sign in again.\\x1b[0m');\n          this.completeProcessing();\n        }, 500);\n      }, 300);\n    }\n    // ヘルプコマンド\n    else if (command === 'help' || command === '?') {\n      this.terminal.writeln('\\x1b[1;32m● Available commands:\\x1b[0m');\n      this.terminal.writeln('  \\x1b[36mlogin\\x1b[0m            - Sign in with Google (default)');\n      this.terminal.writeln('  \\x1b[36mauth\\x1b[0m --provider=\\x1b[33mgoogle\\x1b[0m   - Sign in with Google');\n      this.terminal.writeln('  \\x1b[36mauth\\x1b[0m --provider=\\x1b[33mtwitter\\x1b[0m  - Sign in with Twitter');\n      this.terminal.writeln('  \\x1b[36mauth\\x1b[0m --provider=\\x1b[33mlocal\\x1b[0m    - Sign in with email/password');\n      this.terminal.writeln('  \\x1b[36mlogout\\x1b[0m / \\x1b[36msignout\\x1b[0m - Sign out from the application');\n      this.terminal.writeln('  \\x1b[36mterms\\x1b[0m            - View Terms of Service');\n      this.terminal.writeln('  \\x1b[36mabout\\x1b[0m            - Show company information');\n      this.terminal.writeln('  \\x1b[36mclear\\x1b[0m            - Clear terminal');\n      this.terminal.writeln('  \\x1b[36mhelp\\x1b[0m / \\x1b[36m?\\x1b[0m        - Show this help');\n      this.terminal.writeln('');\n      this.terminal.writeln('\\x1b[1;33m● Keyboard shortcuts:\\x1b[0m');\n      this.terminal.writeln('  \\x1b[36m⌘K\\x1b[0m / \\x1b[36mCtrl+K\\x1b[0m    - Generate command suggestions');\n      this.terminal.writeln('  \\x1b[36m↑\\x1b[0m / \\x1b[36m↓\\x1b[0m           - Navigate command history');\n      this.completeProcessing();\n    }\n    // machina情報コマンド\n    else if (command === 'about') {\n      ABOUT_MESSAGE.split('\\n').forEach(line => this.terminal.writeln(line));\n      this.completeProcessing();\n    }\n    // 利用規約コマンド\n    else if (command === 'terms') {\n      this.terminal.writeln('\\x1b[1;32m● Opening Terms of Service...\\x1b[0m');\n      setTimeout(() => {\n        this.dispatch({ id: ActionId.NAVIGATE, payload: 'terms' });\n        this.completeProcessing();\n      }, 300);\n    }\n    // クリアコマンド\n    else if (command === 'clear' || command === 'cls') {\n      this.terminal.clear();\n      this.terminal.scrollToBottom();\n      this.completeProcessing();\n    }\n    // 不明なコマンド\n    else {\n      this.terminal.writeln(`\\x1b[1;31m● Command not found: ${command}\\x1b[0m`);\n      this.terminal.writeln('  Type \"help\" for available commands.');\n      this.completeProcessing();\n    }\n  }\n\n  private completeProcessing() {\n    this.isProcessing = false;\n    this.statusText = 'Ready';\n    this.cdr.markForCheck();\n    this.terminal.writeln('');\n    \n    // 最新の出力が見えるようにスクロール\n    this.terminal.scrollToBottom();\n    \n    // 入力フィールドにフォーカスを戻す\n    setTimeout(() => {\n      this.inputField()?.nativeElement?.focus();\n    }, 100);\n  }\n\n  handleEnter(event: KeyboardEvent) {\n    // Shift+EnterまたはCtrl+Enterの場合は改行を許可\n    if (event.shiftKey || event.ctrlKey) {\n      return; // デフォルト動作（改行）を許可\n    }\n\n    event.preventDefault();\n    const actualCommand = this.currentInput.trim();\n\n    if (actualCommand) {\n      // コマンドをターミナルに表示（改行を含む場合は適切に処理）\n      const displayCommand = actualCommand.split('\\n').map(line => '\\x1b[32m> \\x1b[0m' + line).join('\\r\\n');\n      this.terminal.write(displayCommand + '\\r\\n');\n\n      // 履歴に追加\n      this.commandHistory.push(actualCommand);\n      this.historyIndex = this.commandHistory.length;\n\n      // コマンドを処理\n      this.processCommand(actualCommand);\n\n      // 入力を初期状態にリセット\n      this.currentInput = '';\n\n      // textareaの高さをリセット\n      const textarea = this.inputField()?.nativeElement;\n      if (textarea) {\n        textarea.style.height = 'auto';\n      }\n    }\n  }\n  \n  navigateHistory(event: KeyboardEvent, direction: number) {\n    event.preventDefault();\n\n    if (direction === -1 && this.historyIndex > 0) {\n      // 上矢印\n      this.historyIndex--;\n      this.currentInput = this.commandHistory[this.historyIndex];\n    } else if (direction === 1) {\n      // 下矢印\n      if (this.historyIndex < this.commandHistory.length - 1) {\n        this.historyIndex++;\n        this.currentInput = this.commandHistory[this.historyIndex];\n      } else {\n        this.historyIndex = this.commandHistory.length;\n        this.currentInput = '';\n      }\n    }\n  }\n  \n  generateCommand(event?: KeyboardEvent) {\n    if (event) {\n      event.preventDefault();\n    }\n    \n    this.terminal.writeln('');\n    this.terminal.writeln('\\x1b[1;32m● Generating command suggestions...\\x1b[0m');\n    \n    setTimeout(() => {\n      this.terminal.writeln('\\x1b[1;33m● Suggested commands:\\x1b[0m');\n      this.terminal.writeln('  1. \\x1b[36mauth --provider=google\\x1b[0m');\n      this.terminal.writeln('  2. \\x1b[36mlogin\\x1b[0m');\n      this.terminal.writeln('  3. \\x1b[36mhelp\\x1b[0m');\n      this.terminal.writeln('');\n      this.cdr.markForCheck();\n    }, 500);\n  }\n\n  onNavAction(action: any) {\n    if (action.id === 'close-side-app') {\n      this.app.sideApp.collapse();\n      return;\n    }\n    this.dispatch(action);\n  }\n\n  // 入力フィールドにフォーカスを設定\n  focusInput() {\n    this.inputField()?.nativeElement?.focus();\n  }\n\n  // textareaの高さを内容に合わせて調整\n  adjustTextareaHeight() {\n    const textarea = this.inputField()?.nativeElement;\n    if (textarea) {\n      // 一旦高さをリセット\n      textarea.style.height = '20px';\n      // scrollHeightを確認し、実際に必要な高さを設定\n      const scrollHeight = textarea.scrollHeight;\n      // パディングを考慮した最小高さ\n      const minHeight = 44; // padding: 12px * 2 + line-height: 20px\n      textarea.style.height = Math.max(minHeight, scrollHeight) + 'px';\n    }\n  }\n\n  // キーダウンイベントのハンドラ（プレフィックス削除防止は不要になったためノーオペレーション）\n  preventPrefixDeletion(_event: KeyboardEvent) {\n    // No-op: prefix protection no longer needed\n  }\n\n  // 入力時の処理\n  handleInput(event: Event) {\n    const textarea = event.target as HTMLTextAreaElement;\n\n    // 高さ調整（改行が含まれている場合のみ）\n    if (this.currentInput.includes('\\n')) {\n      this.adjustTextareaHeight();\n    } else {\n      // 1行の場合は固定高さ\n      textarea.style.height = '44px';\n    }\n\n    // カーソル位置を更新\n    this.updateCursorPosition();\n  }\n\n  // フォーカス時の処理\n  handleFocus() {\n    this.showCursor = true;\n    this.updateCursorPosition();\n  }\n\n  // ブラー時の処理\n  handleBlur() {\n    this.showCursor = false;\n  }\n\n  // カーソル位置の更新\n  updateCursorPosition() {\n    const textarea = this.inputField()?.nativeElement;\n    if (!textarea) return;\n    \n    const cursorPos = textarea.selectionStart;\n    const textBeforeCursor = this.currentInput.substring(0, cursorPos);\n    \n    // 改行で分割\n    const lines = textBeforeCursor.split('\\n');\n    const currentLineIndex = lines.length - 1;\n    const currentLineText = lines[currentLineIndex];\n    \n    // 仮のcanvasを使って現在の行のテキスト幅を計算\n    const canvas = document.createElement('canvas');\n    const context = canvas.getContext('2d');\n    if (context) {\n      context.font = '14px \"SF Mono\", Monaco, monospace';\n      const textWidth = context.measureText(currentLineText).width;\n      \n      // カーソル位置を設定（パディング分を考慮）\n      this.cursorLeft = 8 + textWidth; // 8px は textarea の左パディング\n      \n      // 垂直位置を調整（行数に基づいて、スクロール位置も考慮）\n      const scrollTop = textarea.scrollTop;\n      this.cursorTop = 12 + (currentLineIndex * 20) - scrollTop; // スクロール分を引く\n    }\n  }\n}\n\nexport function provideAgentTemplate(): Provider[] {\n  return [\n    provideComponent(EntranceTemplateStore, () => AgentTemplate),\n  ];\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}