@xxmachina/components 19.0.0-preview.9 → 19.1.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.
Files changed (256) hide show
  1. package/extras/flow/index.d.ts +183 -0
  2. package/features/command/index.d.ts +67 -1
  3. package/features/query/index.d.ts +117 -1
  4. package/fesm2022/xxmachina-components-extras-flow.mjs +389 -0
  5. package/fesm2022/xxmachina-components-extras-flow.mjs.map +1 -0
  6. package/fesm2022/xxmachina-components-features-command.mjs +7 -8
  7. package/fesm2022/xxmachina-components-features-command.mjs.map +1 -1
  8. package/fesm2022/xxmachina-components-features-query.mjs +120 -96
  9. package/fesm2022/xxmachina-components-features-query.mjs.map +1 -1
  10. package/fesm2022/xxmachina-components-groups-command-form.mjs +3 -3
  11. package/fesm2022/xxmachina-components-groups-command-form.mjs.map +1 -1
  12. package/fesm2022/xxmachina-components-groups-query-form.mjs +110 -24
  13. package/fesm2022/xxmachina-components-groups-query-form.mjs.map +1 -1
  14. package/fesm2022/xxmachina-components-molecules-calendar-paginator.mjs +4 -4
  15. package/fesm2022/xxmachina-components-molecules-calendar-paginator.mjs.map +1 -1
  16. package/fesm2022/xxmachina-components-molecules-daily-cell.mjs +13 -13
  17. package/fesm2022/xxmachina-components-molecules-daily-cell.mjs.map +1 -1
  18. package/fesm2022/xxmachina-components-molecules-weekly-header.mjs +5 -5
  19. package/fesm2022/xxmachina-components-molecules-weekly-header.mjs.map +1 -1
  20. package/fesm2022/xxmachina-components-organisms-calendar-section.mjs +5 -5
  21. package/fesm2022/xxmachina-components-organisms-calendar-section.mjs.map +1 -1
  22. package/fesm2022/xxmachina-components-organisms-event-input-section.mjs +3 -3
  23. package/fesm2022/xxmachina-components-organisms-event-input-section.mjs.map +1 -1
  24. package/fesm2022/xxmachina-components-organisms-terminal-input-section.mjs +123 -0
  25. package/fesm2022/xxmachina-components-organisms-terminal-input-section.mjs.map +1 -0
  26. package/fesm2022/xxmachina-components-organisms-video-trimmer-section.mjs +6 -6
  27. package/fesm2022/xxmachina-components-organisms-video-trimmer-section.mjs.map +1 -1
  28. package/fesm2022/xxmachina-components-organisms-xterm.mjs +94 -0
  29. package/fesm2022/xxmachina-components-organisms-xterm.mjs.map +1 -0
  30. package/fesm2022/xxmachina-components-pages-command.mjs +196 -48
  31. package/fesm2022/xxmachina-components-pages-command.mjs.map +1 -1
  32. package/fesm2022/xxmachina-components-pages-query.mjs +394 -92
  33. package/fesm2022/xxmachina-components-pages-query.mjs.map +1 -1
  34. package/fesm2022/xxmachina-components-pages-thread.mjs +176 -0
  35. package/fesm2022/xxmachina-components-pages-thread.mjs.map +1 -0
  36. package/fesm2022/{xxmachina-components-routes-commands-command.routes-CeRVzy3Z.mjs → xxmachina-components-routes-commands-command.routes-CSwIdXZg.mjs} +4 -11
  37. package/fesm2022/xxmachina-components-routes-commands-command.routes-CSwIdXZg.mjs.map +1 -0
  38. package/fesm2022/{xxmachina-components-routes-commands-pages.routes-Cm6Yd40h.mjs → xxmachina-components-routes-commands-pages.routes-j2xVop4W.mjs} +4 -4
  39. package/fesm2022/xxmachina-components-routes-commands-pages.routes-j2xVop4W.mjs.map +1 -0
  40. package/fesm2022/xxmachina-components-routes-commands.mjs +8 -3
  41. package/fesm2022/xxmachina-components-routes-commands.mjs.map +1 -1
  42. package/fesm2022/xxmachina-components-routes-pages.mjs +3 -1
  43. package/fesm2022/xxmachina-components-routes-pages.mjs.map +1 -1
  44. package/fesm2022/xxmachina-components-routes-preloading.mjs +3 -3
  45. package/fesm2022/xxmachina-components-routes-preloading.mjs.map +1 -1
  46. package/fesm2022/xxmachina-components-routes-queries-pages.routes-CfrglCIL.mjs +9 -0
  47. package/fesm2022/xxmachina-components-routes-queries-pages.routes-CfrglCIL.mjs.map +1 -0
  48. package/fesm2022/xxmachina-components-routes-queries.mjs +16 -7
  49. package/fesm2022/xxmachina-components-routes-queries.mjs.map +1 -1
  50. package/fesm2022/{xxmachina-components-routes-query-pages.routes-H2vrF7kQ.mjs → xxmachina-components-routes-query-pages.routes-CxTbOJDQ.mjs} +9 -9
  51. package/fesm2022/xxmachina-components-routes-query-pages.routes-CxTbOJDQ.mjs.map +1 -0
  52. package/fesm2022/xxmachina-components-routes-query.mjs +5 -3
  53. package/fesm2022/xxmachina-components-routes-query.mjs.map +1 -1
  54. package/fesm2022/{xxmachina-components-routes-resources-pages.routes-BSjrrV1g.mjs → xxmachina-components-routes-resources-pages.routes-CzjQOxwT.mjs} +4 -4
  55. package/fesm2022/xxmachina-components-routes-resources-pages.routes-CzjQOxwT.mjs.map +1 -0
  56. package/fesm2022/{xxmachina-components-routes-resources-resource.routes-DzGgwitX.mjs → xxmachina-components-routes-resources-resource.routes-C5KpB3KM.mjs} +3 -3
  57. package/fesm2022/xxmachina-components-routes-resources-resource.routes-C5KpB3KM.mjs.map +1 -0
  58. package/fesm2022/xxmachina-components-routes-resources.mjs +8 -6
  59. package/fesm2022/xxmachina-components-routes-resources.mjs.map +1 -1
  60. package/fesm2022/xxmachina-components-routes-side-chat.mjs +4 -112
  61. package/fesm2022/xxmachina-components-routes-side-chat.mjs.map +1 -1
  62. package/fesm2022/xxmachina-components-routes-side.mjs +4 -2
  63. package/fesm2022/xxmachina-components-routes-side.mjs.map +1 -1
  64. package/fesm2022/xxmachina-components-routes-transformer.mjs +99 -0
  65. package/fesm2022/xxmachina-components-routes-transformer.mjs.map +1 -0
  66. package/fesm2022/xxmachina-components-routes-transformers-pages.routes-02pVsNas.mjs +9 -0
  67. package/fesm2022/xxmachina-components-routes-transformers-pages.routes-02pVsNas.mjs.map +1 -0
  68. package/fesm2022/xxmachina-components-routes-transformers.mjs +75 -0
  69. package/fesm2022/xxmachina-components-routes-transformers.mjs.map +1 -0
  70. package/fesm2022/xxmachina-components-routes.mjs +8 -4
  71. package/fesm2022/xxmachina-components-routes.mjs.map +1 -1
  72. package/fesm2022/xxmachina-components-services-app.mjs +30 -0
  73. package/fesm2022/xxmachina-components-services-app.mjs.map +1 -0
  74. package/fesm2022/xxmachina-components-services-assistant.mjs +3 -3
  75. package/fesm2022/xxmachina-components-services-assistant.mjs.map +1 -1
  76. package/fesm2022/xxmachina-components-services-calendar.mjs +3 -3
  77. package/fesm2022/xxmachina-components-services-calendar.mjs.map +1 -1
  78. package/fesm2022/xxmachina-components-services-command.mjs +11 -10
  79. package/fesm2022/xxmachina-components-services-command.mjs.map +1 -1
  80. package/fesm2022/xxmachina-components-services-context.mjs +23 -0
  81. package/fesm2022/xxmachina-components-services-context.mjs.map +1 -0
  82. package/fesm2022/xxmachina-components-services-contract.mjs +4 -4
  83. package/fesm2022/xxmachina-components-services-contract.mjs.map +1 -1
  84. package/fesm2022/xxmachina-components-services-debug.mjs +3 -3
  85. package/fesm2022/xxmachina-components-services-debug.mjs.map +1 -1
  86. package/fesm2022/xxmachina-components-services-forms-query.mjs +13 -3
  87. package/fesm2022/xxmachina-components-services-forms-query.mjs.map +1 -1
  88. package/fesm2022/xxmachina-components-services-forms-schedule.mjs +4 -4
  89. package/fesm2022/xxmachina-components-services-forms-schedule.mjs.map +1 -1
  90. package/fesm2022/xxmachina-components-services-forms-variables.mjs +34 -0
  91. package/fesm2022/xxmachina-components-services-forms-variables.mjs.map +1 -0
  92. package/fesm2022/xxmachina-components-services-graphql.mjs +7 -6
  93. package/fesm2022/xxmachina-components-services-graphql.mjs.map +1 -1
  94. package/fesm2022/xxmachina-components-services-invoice.mjs +7 -4
  95. package/fesm2022/xxmachina-components-services-invoice.mjs.map +1 -1
  96. package/fesm2022/xxmachina-components-services-json-schema.mjs +3 -3
  97. package/fesm2022/xxmachina-components-services-json-schema.mjs.map +1 -1
  98. package/fesm2022/xxmachina-components-services-link.mjs +3 -3
  99. package/fesm2022/xxmachina-components-services-link.mjs.map +1 -1
  100. package/fesm2022/xxmachina-components-services-message.mjs +50 -0
  101. package/fesm2022/xxmachina-components-services-message.mjs.map +1 -0
  102. package/fesm2022/xxmachina-components-services-openai.mjs +113 -0
  103. package/fesm2022/xxmachina-components-services-openai.mjs.map +1 -0
  104. package/fesm2022/xxmachina-components-services-openapi.mjs +5 -5
  105. package/fesm2022/xxmachina-components-services-openapi.mjs.map +1 -1
  106. package/fesm2022/xxmachina-components-services-order.mjs +4 -4
  107. package/fesm2022/xxmachina-components-services-order.mjs.map +1 -1
  108. package/fesm2022/xxmachina-components-services-partner.mjs +4 -4
  109. package/fesm2022/xxmachina-components-services-partner.mjs.map +1 -1
  110. package/fesm2022/xxmachina-components-services-query.mjs +32 -45
  111. package/fesm2022/xxmachina-components-services-query.mjs.map +1 -1
  112. package/fesm2022/xxmachina-components-services-recording.mjs +3 -3
  113. package/fesm2022/xxmachina-components-services-recording.mjs.map +1 -1
  114. package/fesm2022/xxmachina-components-services-schedule.mjs +10 -7
  115. package/fesm2022/xxmachina-components-services-schedule.mjs.map +1 -1
  116. package/fesm2022/xxmachina-components-services-thread.mjs +5 -7
  117. package/fesm2022/xxmachina-components-services-thread.mjs.map +1 -1
  118. package/fesm2022/xxmachina-components-services-transformer.mjs +31 -0
  119. package/fesm2022/xxmachina-components-services-transformer.mjs.map +1 -0
  120. package/fesm2022/xxmachina-components-services-youtube.mjs +3 -3
  121. package/fesm2022/xxmachina-components-services-youtube.mjs.map +1 -1
  122. package/fesm2022/xxmachina-components-templates-agent.mjs +549 -0
  123. package/fesm2022/xxmachina-components-templates-agent.mjs.map +1 -0
  124. package/fesm2022/xxmachina-components-templates-background.mjs +202 -5
  125. package/fesm2022/xxmachina-components-templates-background.mjs.map +1 -1
  126. package/fesm2022/xxmachina-components-templates-invoice-iframe.mjs +3 -3
  127. package/fesm2022/xxmachina-components-templates-invoice-iframe.mjs.map +1 -1
  128. package/fesm2022/xxmachina-components-templates-scheduler.mjs +5 -5
  129. package/fesm2022/xxmachina-components-templates-scheduler.mjs.map +1 -1
  130. package/fesm2022/xxmachina-components-templates-video.mjs +6 -6
  131. package/fesm2022/xxmachina-components-templates-video.mjs.map +1 -1
  132. package/fesm2022/xxmachina-components-validators-query.mjs +2 -2
  133. package/fesm2022/xxmachina-components-validators-query.mjs.map +1 -1
  134. package/fesm2022/xxmachina-components.mjs +218 -39
  135. package/fesm2022/xxmachina-components.mjs.map +1 -1
  136. package/groups/command-form/index.d.ts +13 -1
  137. package/groups/query-form/index.d.ts +54 -1
  138. package/index.d.ts +66 -3
  139. package/molecules/calendar-paginator/index.d.ts +14 -1
  140. package/molecules/daily-cell/index.d.ts +35 -1
  141. package/molecules/weekly-header/index.d.ts +11 -1
  142. package/organisms/calendar-section/index.d.ts +25 -1
  143. package/organisms/event-input-section/index.d.ts +45 -1
  144. package/organisms/terminal-input-section/index.d.ts +37 -0
  145. package/organisms/video-trimmer-section/index.d.ts +30 -1
  146. package/organisms/xterm/index.d.ts +23 -0
  147. package/package.json +65 -17
  148. package/pages/command/index.d.ts +217 -1
  149. package/pages/query/index.d.ts +292 -1
  150. package/pages/thread/index.d.ts +109 -0
  151. package/routes/commands/index.d.ts +5 -1
  152. package/routes/index.d.ts +4 -1
  153. package/routes/pages/index.d.ts +5 -1
  154. package/routes/preloading/index.d.ts +11 -1
  155. package/routes/queries/index.d.ts +5 -1
  156. package/routes/query/index.d.ts +5 -1
  157. package/routes/resources/index.d.ts +5 -1
  158. package/routes/side/chat/index.d.ts +5 -2
  159. package/routes/side/index.d.ts +5 -1
  160. package/routes/transformer/index.d.ts +5 -0
  161. package/routes/transformers/index.d.ts +5 -0
  162. package/services/app/index.d.ts +17 -0
  163. package/services/assistant/index.d.ts +20 -1
  164. package/services/calendar/index.d.ts +13 -1
  165. package/services/command/index.d.ts +54 -1
  166. package/services/context/index.d.ts +10 -0
  167. package/services/contract/index.d.ts +11 -1
  168. package/services/debug/index.d.ts +14 -1
  169. package/services/forms/query/index.d.ts +45 -1
  170. package/services/forms/schedule/index.d.ts +42 -1
  171. package/services/forms/variables/index.d.ts +12 -0
  172. package/services/graphql/index.d.ts +20 -1
  173. package/services/invoice/index.d.ts +19 -1
  174. package/services/json-schema/index.d.ts +15 -1
  175. package/services/link/index.d.ts +13 -1
  176. package/services/message/index.d.ts +23 -0
  177. package/services/openai/index.d.ts +35 -0
  178. package/services/openapi/index.d.ts +17 -1
  179. package/services/order/index.d.ts +13 -1
  180. package/services/partner/index.d.ts +11 -1
  181. package/services/query/index.d.ts +42 -1
  182. package/services/recording/index.d.ts +20 -1
  183. package/services/schedule/index.d.ts +26 -1
  184. package/services/thread/index.d.ts +30 -1
  185. package/services/transformer/index.d.ts +19 -0
  186. package/services/youtube/index.d.ts +10 -1
  187. package/templates/agent/index.d.ts +54 -0
  188. package/templates/background/index.d.ts +44 -1
  189. package/templates/invoice-iframe/index.d.ts +13 -1
  190. package/templates/scheduler/index.d.ts +31 -1
  191. package/templates/video/index.d.ts +36 -1
  192. package/validators/query/index.d.ts +7 -1
  193. package/app.d.ts +0 -7
  194. package/features/command/command.feature.d.ts +0 -63
  195. package/features/query/query.feature.d.ts +0 -92
  196. package/fesm2022/xxmachina-components-routes-commands-command.routes-CeRVzy3Z.mjs.map +0 -1
  197. package/fesm2022/xxmachina-components-routes-commands-pages.routes-Cm6Yd40h.mjs.map +0 -1
  198. package/fesm2022/xxmachina-components-routes-queries-pages.routes-BfWsTCij.mjs +0 -9
  199. package/fesm2022/xxmachina-components-routes-queries-pages.routes-BfWsTCij.mjs.map +0 -1
  200. package/fesm2022/xxmachina-components-routes-query-pages.routes-H2vrF7kQ.mjs.map +0 -1
  201. package/fesm2022/xxmachina-components-routes-resources-pages.routes-BSjrrV1g.mjs.map +0 -1
  202. package/fesm2022/xxmachina-components-routes-resources-resource.routes-DzGgwitX.mjs.map +0 -1
  203. package/fesm2022/xxmachina-components-services-query-config.mjs +0 -47
  204. package/fesm2022/xxmachina-components-services-query-config.mjs.map +0 -1
  205. package/groups/command-form/command-form.group.d.ts +0 -10
  206. package/groups/query-form/query-form.group.d.ts +0 -19
  207. package/molecules/calendar-paginator/calendar-paginator.molecule.d.ts +0 -11
  208. package/molecules/daily-cell/daily-cell.molecule.d.ts +0 -32
  209. package/molecules/weekly-header/weekly-header.molecule.d.ts +0 -8
  210. package/organisms/calendar-section/calendar-section.organism.d.ts +0 -22
  211. package/organisms/event-input-section/event-input-section.organism.d.ts +0 -43
  212. package/organisms/video-trimmer-section/video-trimmer-section.organism.d.ts +0 -25
  213. package/pages/command/command.page.d.ts +0 -113
  214. package/pages/query/query.page.d.ts +0 -145
  215. package/router/index.d.ts +0 -5
  216. package/routes/commands/commands.routes.d.ts +0 -3
  217. package/routes/commands/pages/command/command.routes.d.ts +0 -2
  218. package/routes/commands/pages/pages.routes.d.ts +0 -3
  219. package/routes/pages/pages.routes.d.ts +0 -3
  220. package/routes/preloading/preloading.strategy.d.ts +0 -8
  221. package/routes/queries/pages/pages.routes.d.ts +0 -3
  222. package/routes/queries/queries.routes.d.ts +0 -3
  223. package/routes/query/pages/pages.routes.d.ts +0 -3
  224. package/routes/query/query.routes.d.ts +0 -4
  225. package/routes/resources/pages/pages.routes.d.ts +0 -3
  226. package/routes/resources/pages/resource/resource.routes.d.ts +0 -3
  227. package/routes/resources/resources.routes.d.ts +0 -3
  228. package/routes/side/chat/chat.component.d.ts +0 -37
  229. package/routes/side/chat/chat.routes.d.ts +0 -3
  230. package/routes/side/pages.routes.d.ts +0 -3
  231. package/services/assistant/assistant.service.d.ts +0 -17
  232. package/services/calendar/calendar.service.d.ts +0 -10
  233. package/services/command/command.service.d.ts +0 -49
  234. package/services/contract/contract.service.d.ts +0 -7
  235. package/services/debug/debug.service.d.ts +0 -11
  236. package/services/forms/query/query.service.d.ts +0 -38
  237. package/services/forms/schedule/schedule.service.d.ts +0 -39
  238. package/services/graphql/graphql.service.d.ts +0 -14
  239. package/services/invoice/invoice.service.d.ts +0 -15
  240. package/services/json-schema/json-schema.service.d.ts +0 -12
  241. package/services/link/link.service.d.ts +0 -10
  242. package/services/openapi/openapi.service.d.ts +0 -14
  243. package/services/order/order.service.d.ts +0 -10
  244. package/services/partner/partner.service.d.ts +0 -7
  245. package/services/query/query.service.d.ts +0 -34
  246. package/services/query-config/index.d.ts +0 -1
  247. package/services/query-config/query-config.service.d.ts +0 -26
  248. package/services/recording/recording.service.d.ts +0 -17
  249. package/services/schedule/schedule.service.d.ts +0 -23
  250. package/services/thread/thread.service.d.ts +0 -27
  251. package/services/youtube/youtube.service.d.ts +0 -7
  252. package/templates/background/background.template.d.ts +0 -13
  253. package/templates/invoice-iframe/invoice-iframe.template.d.ts +0 -10
  254. package/templates/scheduler/scheduler.template.d.ts +0 -29
  255. package/templates/video/video.template.d.ts +0 -31
  256. package/validators/query/query.validators.d.ts +0 -4
@@ -0,0 +1,549 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, ChangeDetectorRef, viewChild, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { NgAtomicComponent, provideComponent } from '@ng-atomic/core';
4
+ import * as i2 from '@angular/forms';
5
+ import { FormsModule } from '@angular/forms';
6
+ import { CommonModule } from '@angular/common';
7
+ import { AutoLayoutFrame } from '@ng-atomic/components/frames/auto-layout';
8
+ import { CardFrame } from '@ng-atomic/components/frames/card';
9
+ import { ActionButtonsSectionOrganism } from '@ng-atomic/components/organisms/action-buttons-section';
10
+ import { HeadingOrganism } from '@ng-atomic/components/organisms/heading';
11
+ import { NgAtomicFormSectionBuilder } from '@ng-atomic/components/templates/form';
12
+ import * as i1 from '@ng-atomic/components/templates/entrance';
13
+ import { EntranceTemplateStore } from '@ng-atomic/components/templates/entrance';
14
+ import { AppService } from '@ng-atomic/common/services/app';
15
+ import * as i3 from '@angular/material/button';
16
+ import { MatButtonModule } from '@angular/material/button';
17
+ import * as i4 from '@angular/material/icon';
18
+ import { MatIconModule } from '@angular/material/icon';
19
+ import * as i5 from '@angular/material/tooltip';
20
+ import { MatTooltipModule } from '@angular/material/tooltip';
21
+ import { XtermOrganism } from '@xxmachina/components/organisms/xterm';
22
+ import chalk from 'chalk';
23
+
24
+ var ActionId;
25
+ (function (ActionId) {
26
+ ActionId["SIGN_IN"] = "[@ng-atomic/components] Sign In";
27
+ ActionId["SIGN_IN_WITH_GOOGLE"] = "[@ng-atomic/components] Sign In With Google";
28
+ ActionId["SIGN_IN_WITH_TWITTER"] = "[@ng-atomic/components] Sign In With Twitter";
29
+ ActionId["SIGN_OUT"] = "[@ng-atomic/components] Sign Out";
30
+ })(ActionId || (ActionId = {}));
31
+ class AgentTemplate extends NgAtomicComponent {
32
+ constructor() {
33
+ super(...arguments);
34
+ this.ActionId = ActionId;
35
+ this.store = inject(EntranceTemplateStore);
36
+ this.cdr = inject(ChangeDetectorRef);
37
+ this.app = inject(AppService);
38
+ this.xtermComponent = viewChild('xtermComponent');
39
+ this.inputField = viewChild('inputField');
40
+ this.statusText = 'Ready';
41
+ this.isProcessing = false;
42
+ this.showCursor = false;
43
+ this.cursorLeft = 60;
44
+ this.cursorTop = 12;
45
+ this.commandHistory = [];
46
+ this.historyIndex = -1;
47
+ // 入力管理
48
+ this.currentInput = 'x_x ';
49
+ }
50
+ static { this.ActionId = ActionId; }
51
+ ngAfterViewInit() {
52
+ // 入力フィールドにフォーカス
53
+ setTimeout(() => {
54
+ const textarea = this.inputField()?.nativeElement;
55
+ if (textarea) {
56
+ textarea.focus();
57
+ // 初期高さを適切に設定
58
+ this.adjustTextareaHeight();
59
+ }
60
+ }, 100);
61
+ }
62
+ onTerminalReady(terminal) {
63
+ this.terminal = terminal;
64
+ // 初期メッセージの表示
65
+ this.showWelcomeMessage();
66
+ // 初回ロード時は最上部にスクロール(アスキーアートから見えるように)
67
+ setTimeout(() => {
68
+ this.terminal.scrollToTop();
69
+ }, 50);
70
+ // 入力フィールドにフォーカスと高さ調整
71
+ const textarea = this.inputField()?.nativeElement;
72
+ if (textarea) {
73
+ textarea.focus();
74
+ this.adjustTextareaHeight();
75
+ }
76
+ }
77
+ showWelcomeMessage() {
78
+ // アスキーアート(lain風の色で)
79
+ this.terminal.writeln('');
80
+ this.terminal.writeln('');
81
+ this.terminal.writeln(`${chalk.cyan('███╗ ███╗ █████╗ ██████╗██╗ ██╗██╗███╗ ██╗ █████╗ ')}`);
82
+ this.terminal.writeln(`${chalk.cyan('████╗ ████║██╔══██╗██╔════╝██║ ██║██║████╗ ██║██╔══██╗')}`);
83
+ this.terminal.writeln(`${chalk.cyan('██╔████╔██║███████║██║ ███████║██║██╔██╗ ██║███████║')}`);
84
+ this.terminal.writeln(`${chalk.cyan('██║╚██╔╝██║██╔══██║██║ ██╔══██║██║██║╚██╗██║██╔══██║')}`);
85
+ this.terminal.writeln(`${chalk.cyan('██║ ╚═╝ ██║██║ ██║╚██████╗██║ ██║██║██║ ╚████║██║ ██║')}`);
86
+ this.terminal.writeln(`${chalk.cyan('╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝╚═╝ ╚═╝')}`);
87
+ this.terminal.writeln(`${chalk.cyan(' █████╗ ██████╗ ███████╗███╗ ██╗████████╗')}`);
88
+ this.terminal.writeln(`${chalk.cyan(' ██╔══██╗██╔════╝ ██╔════╝████╗ ██║╚══██╔══╝')}`);
89
+ this.terminal.writeln(`${chalk.cyan(' ███████║██║ ███╗█████╗ ██╔██╗ ██║ ██║ ')}`);
90
+ this.terminal.writeln(`${chalk.cyan(' ██╔══██║██║ ██║██╔══╝ ██║╚██╗██║ ██║ ')}`);
91
+ this.terminal.writeln(`${chalk.cyan(' ██║ ██║╚██████╔╝███████╗██║ ╚████║ ██║ ')}`);
92
+ this.terminal.writeln(`${chalk.cyan(' ╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ')}`);
93
+ this.terminal.writeln('');
94
+ this.terminal.writeln(`${chalk.cyan('● Welcome to \x1b[1;93m合同会社マキナエージェント\x1b[0m')}`);
95
+ this.terminal.writeln('');
96
+ this.terminal.writeln(`${chalk.cyan('● 会社概要\x1b[0m')}`);
97
+ this.terminal.writeln(' 合同会社マキナエージェントは、AI技術を活用した');
98
+ this.terminal.writeln(' 革新的なソリューションを提供する企業です。');
99
+ this.terminal.writeln('');
100
+ this.terminal.writeln(`${chalk.cyan('● 事業内容\x1b[0m')}`);
101
+ this.terminal.writeln(' - システム開発のコンサルティング事業');
102
+ this.terminal.writeln(' - AIアジャイル開発の導入支援事業');
103
+ this.terminal.writeln(' - 自己改変型AIエージェント(オートポイエーシス)の開発事業');
104
+ this.terminal.writeln('');
105
+ this.terminal.writeln(`${chalk.cyan('● ビジョン\x1b[0m')}`);
106
+ this.terminal.writeln(' 人とAIが協働する未来を創造し、');
107
+ this.terminal.writeln(' あらゆるビジネスの可能性を拡げます。');
108
+ this.terminal.writeln('');
109
+ this.terminal.writeln('');
110
+ this.terminal.writeln(`${chalk.cyan('● Type \x1b[1;36mlogin\x1b[1;33m to sign in with Google\x1b[0m')}`);
111
+ this.terminal.writeln(`${chalk.cyan('● Type \x1b[1;36mhelp\x1b[1;33m for more commands\x1b[0m')}`);
112
+ this.terminal.writeln('');
113
+ // プロンプト表示
114
+ this.showPrompt();
115
+ }
116
+ showPrompt() {
117
+ // プロンプトはHTML側の入力フィールドで表示するため不要
118
+ }
119
+ processCommand(command) {
120
+ this.isProcessing = true;
121
+ this.statusText = 'Processing...';
122
+ this.cdr.markForCheck();
123
+ // ログインコマンド
124
+ if (command === 'login') {
125
+ this.terminal.writeln('\x1b[1;32m● Initiating Google authentication...\x1b[0m');
126
+ setTimeout(() => {
127
+ this.dispatch({ id: ActionId.SIGN_IN_WITH_GOOGLE });
128
+ this.completeProcessing();
129
+ }, 300);
130
+ }
131
+ else if (command.startsWith('auth')) {
132
+ if (command.includes('google')) {
133
+ this.terminal.writeln('\x1b[1;32m● Initiating Google authentication...\x1b[0m');
134
+ setTimeout(() => {
135
+ this.dispatch({ id: ActionId.SIGN_IN_WITH_GOOGLE });
136
+ this.completeProcessing();
137
+ }, 300);
138
+ }
139
+ else if (command.includes('twitter')) {
140
+ this.terminal.writeln('\x1b[1;32m● Initiating Twitter authentication...\x1b[0m');
141
+ setTimeout(() => {
142
+ this.dispatch({ id: ActionId.SIGN_IN_WITH_TWITTER });
143
+ this.completeProcessing();
144
+ }, 300);
145
+ }
146
+ else if (command.includes('local')) {
147
+ this.terminal.writeln('\x1b[1;32m● Initiating local authentication...\x1b[0m');
148
+ setTimeout(() => {
149
+ this.dispatch({ id: ActionId.SIGN_IN });
150
+ this.completeProcessing();
151
+ }, 300);
152
+ }
153
+ else {
154
+ this.terminal.writeln('\x1b[1;32m● Available authentication methods:\x1b[0m');
155
+ this.terminal.writeln(' - auth --provider=google');
156
+ this.terminal.writeln(' - auth --provider=twitter');
157
+ this.terminal.writeln(' - auth --provider=local');
158
+ this.completeProcessing();
159
+ }
160
+ }
161
+ // ログアウトコマンド
162
+ else if (command === 'logout' || command === 'signout') {
163
+ this.terminal.writeln('\x1b[1;32m● Signing out...\x1b[0m');
164
+ setTimeout(() => {
165
+ this.dispatch({ id: ActionId.SIGN_OUT });
166
+ setTimeout(() => {
167
+ this.terminal.writeln('\x1b[1;32m● You have been signed out.\x1b[0m');
168
+ this.terminal.writeln('\x1b[1;33m● Type "login" to sign in again.\x1b[0m');
169
+ this.completeProcessing();
170
+ }, 500);
171
+ }, 300);
172
+ }
173
+ // ヘルプコマンド
174
+ else if (command === 'help' || command === '?') {
175
+ this.terminal.writeln('\x1b[1;32m● Available commands:\x1b[0m');
176
+ this.terminal.writeln(' \x1b[36mlogin\x1b[0m - Sign in with Google (default)');
177
+ this.terminal.writeln(' \x1b[36mauth\x1b[0m --provider=\x1b[33mgoogle\x1b[0m - Sign in with Google');
178
+ this.terminal.writeln(' \x1b[36mauth\x1b[0m --provider=\x1b[33mtwitter\x1b[0m - Sign in with Twitter');
179
+ this.terminal.writeln(' \x1b[36mauth\x1b[0m --provider=\x1b[33mlocal\x1b[0m - Sign in with email/password');
180
+ this.terminal.writeln(' \x1b[36mlogout\x1b[0m / \x1b[36msignout\x1b[0m - Sign out from the application');
181
+ this.terminal.writeln(' \x1b[36mabout\x1b[0m - Show company information');
182
+ this.terminal.writeln(' \x1b[36mclear\x1b[0m - Clear terminal');
183
+ this.terminal.writeln(' \x1b[36mhelp\x1b[0m / \x1b[36m?\x1b[0m - Show this help');
184
+ this.terminal.writeln('');
185
+ this.terminal.writeln('\x1b[1;33m● Keyboard shortcuts:\x1b[0m');
186
+ this.terminal.writeln(' \x1b[36m⌘K\x1b[0m / \x1b[36mCtrl+K\x1b[0m - Generate command suggestions');
187
+ this.terminal.writeln(' \x1b[36m↑\x1b[0m / \x1b[36m↓\x1b[0m - Navigate command history');
188
+ this.completeProcessing();
189
+ }
190
+ // 会社情報コマンド
191
+ else if (command === 'about') {
192
+ this.terminal.writeln('\x1b[1;36m● 合同会社マキナエージェント\x1b[0m');
193
+ this.terminal.writeln('');
194
+ this.terminal.writeln('\x1b[1;32m● 会社概要\x1b[0m');
195
+ this.terminal.writeln(' 合同会社マキナエージェントは、AI技術を活用した');
196
+ this.terminal.writeln(' 革新的なソリューションを提供する企業です。');
197
+ this.terminal.writeln('');
198
+ this.terminal.writeln('\x1b[1;32m● 事業内容\x1b[0m');
199
+ this.terminal.writeln(' - システム開発のコンサルティング事業');
200
+ this.terminal.writeln(' - AIアジャイル開発の導入支援事業');
201
+ this.terminal.writeln(' - 自己改変型AIエージェント(オートポイエーシス)の開発事業');
202
+ this.terminal.writeln('');
203
+ this.terminal.writeln('\x1b[1;32m● ビジョン\x1b[0m');
204
+ this.terminal.writeln(' 人とAIが協働する未来を創造し、');
205
+ this.terminal.writeln(' あらゆるビジネスの可能性を拡げます。');
206
+ this.terminal.writeln('');
207
+ this.terminal.writeln('\x1b[1;32m● お問い合わせ\x1b[0m');
208
+ this.terminal.writeln(' 詳細については、ログイン後にお問い合わせください。');
209
+ this.completeProcessing();
210
+ }
211
+ // クリアコマンド
212
+ else if (command === 'clear' || command === 'cls') {
213
+ this.terminal.clear();
214
+ this.terminal.scrollToBottom();
215
+ this.completeProcessing();
216
+ }
217
+ // 不明なコマンド
218
+ else {
219
+ this.terminal.writeln(`\x1b[1;31m● Command not found: ${command}\x1b[0m`);
220
+ this.terminal.writeln(' Type "help" for available commands.');
221
+ this.completeProcessing();
222
+ }
223
+ }
224
+ completeProcessing() {
225
+ this.isProcessing = false;
226
+ this.statusText = 'Ready';
227
+ this.cdr.markForCheck();
228
+ this.terminal.writeln('');
229
+ // 最新の出力が見えるようにスクロール
230
+ this.terminal.scrollToBottom();
231
+ // 入力フィールドにフォーカスを戻す
232
+ setTimeout(() => {
233
+ this.inputField()?.nativeElement?.focus();
234
+ }, 100);
235
+ }
236
+ handleEnter(event) {
237
+ // Shift+EnterまたはCtrl+Enterの場合は改行を許可
238
+ if (event.shiftKey || event.ctrlKey) {
239
+ return; // デフォルト動作(改行)を許可
240
+ }
241
+ event.preventDefault();
242
+ const prefix = 'x_x ';
243
+ const actualCommand = this.currentInput.startsWith(prefix)
244
+ ? this.currentInput.slice(prefix.length).trim()
245
+ : this.currentInput.trim();
246
+ if (actualCommand) {
247
+ // コマンドをターミナルに表示(改行を含む場合は適切に処理)
248
+ const displayCommand = actualCommand.split('\n').map(line => '\x1b[32m> x_x \x1b[0m' + line).join('\r\n');
249
+ this.terminal.write(displayCommand + '\r\n');
250
+ // 履歴に追加
251
+ this.commandHistory.push(actualCommand);
252
+ this.historyIndex = this.commandHistory.length;
253
+ // コマンドを処理
254
+ this.processCommand(actualCommand);
255
+ // 入力を初期状態にリセット
256
+ this.currentInput = prefix;
257
+ // textareaの高さをリセット
258
+ const textarea = this.inputField()?.nativeElement;
259
+ if (textarea) {
260
+ textarea.style.height = 'auto';
261
+ }
262
+ }
263
+ }
264
+ navigateHistory(event, direction) {
265
+ event.preventDefault();
266
+ const prefix = 'x_x ';
267
+ if (direction === -1 && this.historyIndex > 0) {
268
+ // 上矢印
269
+ this.historyIndex--;
270
+ this.currentInput = prefix + this.commandHistory[this.historyIndex];
271
+ }
272
+ else if (direction === 1) {
273
+ // 下矢印
274
+ if (this.historyIndex < this.commandHistory.length - 1) {
275
+ this.historyIndex++;
276
+ this.currentInput = prefix + this.commandHistory[this.historyIndex];
277
+ }
278
+ else {
279
+ this.historyIndex = this.commandHistory.length;
280
+ this.currentInput = prefix;
281
+ }
282
+ }
283
+ }
284
+ generateCommand(event) {
285
+ if (event) {
286
+ event.preventDefault();
287
+ }
288
+ this.terminal.writeln('');
289
+ this.terminal.writeln('\x1b[1;32m● Generating command suggestions...\x1b[0m');
290
+ setTimeout(() => {
291
+ this.terminal.writeln('\x1b[1;33m● Suggested commands:\x1b[0m');
292
+ this.terminal.writeln(' 1. \x1b[36mauth --provider=google\x1b[0m');
293
+ this.terminal.writeln(' 2. \x1b[36mlogin\x1b[0m');
294
+ this.terminal.writeln(' 3. \x1b[36mhelp\x1b[0m');
295
+ this.terminal.writeln('');
296
+ this.cdr.markForCheck();
297
+ }, 500);
298
+ }
299
+ // sideAppを閉じる
300
+ closeSideApp(event) {
301
+ event.stopPropagation();
302
+ this.app.sideApp.collapse();
303
+ }
304
+ // 入力フィールドにフォーカスを設定
305
+ focusInput() {
306
+ this.inputField()?.nativeElement?.focus();
307
+ }
308
+ // textareaの高さを内容に合わせて調整
309
+ adjustTextareaHeight() {
310
+ const textarea = this.inputField()?.nativeElement;
311
+ if (textarea) {
312
+ // 一旦高さをリセット
313
+ textarea.style.height = '20px';
314
+ // scrollHeightを確認し、実際に必要な高さを設定
315
+ const scrollHeight = textarea.scrollHeight;
316
+ // パディングを考慮した最小高さ
317
+ const minHeight = 44; // padding: 12px * 2 + line-height: 20px
318
+ textarea.style.height = Math.max(minHeight, scrollHeight) + 'px';
319
+ }
320
+ }
321
+ // プレフィックスの削除を防止
322
+ preventPrefixDeletion(event) {
323
+ const textarea = event.target;
324
+ const prefix = 'x_x ';
325
+ const selectionStart = textarea.selectionStart;
326
+ // バックスペースまたはDeleteキーの処理
327
+ if (event.key === 'Backspace' || event.key === 'Delete') {
328
+ if (selectionStart <= prefix.length) {
329
+ event.preventDefault();
330
+ }
331
+ }
332
+ // 左矢印キーでカーソルがプレフィックスより前に行かないように
333
+ if (event.key === 'ArrowLeft' && selectionStart <= prefix.length) {
334
+ event.preventDefault();
335
+ }
336
+ // Home キーでカーソルをプレフィックスの直後に移動
337
+ if (event.key === 'Home') {
338
+ event.preventDefault();
339
+ textarea.setSelectionRange(prefix.length, prefix.length);
340
+ }
341
+ }
342
+ // 入力時の処理
343
+ handleInput(event) {
344
+ const textarea = event.target;
345
+ const prefix = 'x_x ';
346
+ // プレフィックスが削除されていたら復元
347
+ if (!this.currentInput.startsWith(prefix)) {
348
+ this.currentInput = prefix + this.currentInput.replace(/^x_x\s*/, '');
349
+ // カーソル位置を調整
350
+ setTimeout(() => {
351
+ const newPosition = Math.max(prefix.length, textarea.selectionStart);
352
+ textarea.setSelectionRange(newPosition, newPosition);
353
+ });
354
+ }
355
+ // 高さ調整(改行が含まれている場合のみ)
356
+ if (this.currentInput.includes('\n')) {
357
+ this.adjustTextareaHeight();
358
+ }
359
+ else {
360
+ // 1行の場合は固定高さ
361
+ textarea.style.height = '44px';
362
+ }
363
+ // カーソル位置を更新
364
+ this.updateCursorPosition();
365
+ }
366
+ // フォーカス時の処理
367
+ handleFocus() {
368
+ this.showCursor = true;
369
+ this.updateCursorPosition();
370
+ }
371
+ // ブラー時の処理
372
+ handleBlur() {
373
+ this.showCursor = false;
374
+ }
375
+ // カーソル位置の更新
376
+ updateCursorPosition() {
377
+ const textarea = this.inputField()?.nativeElement;
378
+ if (!textarea)
379
+ return;
380
+ const cursorPos = textarea.selectionStart;
381
+ const textBeforeCursor = this.currentInput.substring(0, cursorPos);
382
+ // 改行で分割
383
+ const lines = textBeforeCursor.split('\n');
384
+ const currentLineIndex = lines.length - 1;
385
+ const currentLineText = lines[currentLineIndex];
386
+ // 仮のcanvasを使って現在の行のテキスト幅を計算
387
+ const canvas = document.createElement('canvas');
388
+ const context = canvas.getContext('2d');
389
+ if (context) {
390
+ context.font = '14px "SF Mono", Monaco, monospace';
391
+ const textWidth = context.measureText(currentLineText).width;
392
+ // カーソル位置を設定(パディング分を考慮)
393
+ this.cursorLeft = 8 + textWidth; // 8px は textarea の左パディング
394
+ // 垂直位置を調整(行数に基づいて、スクロール位置も考慮)
395
+ const scrollTop = textarea.scrollTop;
396
+ this.cursorTop = 12 + (currentLineIndex * 20) - scrollTop; // スクロール分を引く
397
+ }
398
+ }
399
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: AgentTemplate, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
400
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.0.5", type: AgentTemplate, isStandalone: true, selector: "templates-agent", host: { classAttribute: "template" }, viewQueries: [{ propertyName: "xtermComponent", first: true, predicate: ["xtermComponent"], descendants: true, isSignal: true }, { propertyName: "inputField", first: true, predicate: ["inputField"], descendants: true, isSignal: true }], usesInheritance: true, hostDirectives: [{ directive: i1.EntranceTemplateStore, inputs: ["form", "form", "actions", "actions", "title", "title", "fieldMap", "fieldMap"] }], ngImport: i0, template: `
401
+ <div class="terminal-window">
402
+ <div class="terminal-header">
403
+ <button mat-icon-button class="close-button" (click)="closeSideApp($event)" matTooltip="閉じる">
404
+ <mat-icon>close</mat-icon>
405
+ </button>
406
+ <div class="terminal-title">Machina Agent</div>
407
+ <div class="terminal-status">{{ statusText }}</div>
408
+ </div>
409
+
410
+ <div class="terminal-body">
411
+ <organisms-xterm
412
+ class="terminal-display"
413
+ (terminalReady)="onTerminalReady($event)"
414
+ (click)="focusInput()"
415
+ #xtermComponent
416
+ ></organisms-xterm>
417
+ <div class="input-area">
418
+ <div class="input-line">
419
+ <span class="input-prefix">> x_x</span>
420
+ <div class="textarea-wrapper">
421
+ <span class="arrow-prefix">></span>
422
+ <div class="input-container">
423
+ <textarea
424
+ #inputField
425
+ class="terminal-input"
426
+ [(ngModel)]="currentInput"
427
+ (keydown.enter)="handleEnter($event)"
428
+ (keydown.arrowUp)="navigateHistory($event, -1)"
429
+ (keydown.arrowDown)="navigateHistory($event, 1)"
430
+ (keydown.control.k)="generateCommand($event)"
431
+ (keydown.meta.k)="generateCommand($event)"
432
+ (keydown)="preventPrefixDeletion($event)"
433
+ (input)="handleInput($event)"
434
+ (focus)="handleFocus()"
435
+ (blur)="handleBlur()"
436
+ (keyup)="updateCursorPosition()"
437
+ (click)="updateCursorPosition()"
438
+ (scroll)="updateCursorPosition()"
439
+ [disabled]="isProcessing"
440
+ placeholder="x_x about"
441
+ rows="1"
442
+ ></textarea>
443
+ <div class="block-cursor"
444
+ [class.visible]="showCursor"
445
+ [style.left.px]="cursorLeft"
446
+ [style.top.px]="cursorTop"
447
+ ></div>
448
+ </div>
449
+ </div>
450
+ </div>
451
+ </div>
452
+ </div>
453
+ </div>
454
+ `, isInline: true, styles: [":host{--h-pad: 20px;--h-pad-SCOPED-IN-entrance-zJof: var(--h-pad);--text: #e0e0e0;--text-SCOPED-IN-entrance-zJof: var(--text);--user: #00ff00;--user-SCOPED-IN-entrance-zJof: var(--user);--sys: #888;--sys-SCOPED-IN-entrance-zJof: var(--sys);--accent: #ff79c6;--accent-SCOPED-IN-entrance-zJof: var(--accent);--border: rgba(51, 51, 51, .5);--border-SCOPED-IN-entrance-zJof: var(--border)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}:host{display:flex;justify-content:center;align-items:center;width:100%;height:100%;background:transparent;font-family:SF Mono,Monaco,monospace;container-type:inline-size;container-name:agent-container;transition:all .3s ease}.terminal-window{width:100%;max-width:900px;height:600px;background:#0a0a0a;border:1px solid var(--border-SCOPED-IN-entrance-zJof);border-radius:8px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 20px 40px #0000004d;animation:fadeIn .3s;transition:all .3s ease}.terminal-header{display:flex;justify-content:space-between;align-items:center;height:56px;padding:0 20px;background:#1a1a1a99;border-bottom:1px solid var(--border-SCOPED-IN-entrance-zJof);transition:all .3s ease;position:relative}.terminal-header .close-button{color:var(--sys-SCOPED-IN-entrance-zJof);margin-right:.5rem;opacity:.7}.terminal-header .close-button:hover{color:var(--text-SCOPED-IN-entrance-zJof);opacity:1}.terminal-header .terminal-title{font-size:13px;color:var(--text-SCOPED-IN-entrance-zJof);font-weight:500;flex:1}.terminal-header .terminal-status{font-size:12px;color:var(--sys-SCOPED-IN-entrance-zJof);opacity:.7}.terminal-body{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative;transition:all .3s ease}.terminal-body .terminal-display{flex:1;position:relative;background:#0a0a0a;overflow:hidden}.input-area{background:#000000e6;border-top:1px solid var(--border-SCOPED-IN-entrance-zJof);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:all .3s ease;padding:16px 20px}.input-line{display:block;position:relative}.input-line .input-prefix{display:none}.input-line .textarea-wrapper{display:flex;align-items:flex-start;position:relative;border:1px solid rgba(255,255,255,.2);border-radius:4px;transition:border-color .2s ease}.input-line .textarea-wrapper:focus-within{border-color:#fff6}.input-line .textarea-wrapper .arrow-prefix{color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;padding:12px 0 12px 16px;flex-shrink:0;pointer-events:none}.input-line .textarea-wrapper .input-container{flex:1;position:relative;overflow:hidden}.input-line .textarea-wrapper .terminal-input{width:100%;background:transparent;border:none;outline:none;color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;caret-color:transparent;padding:12px 16px 12px 8px;transition:none;resize:none;height:44px;min-height:44px;max-height:200px;overflow-y:auto;overflow-x:hidden;line-height:20px;box-sizing:border-box;white-space:pre-wrap;word-wrap:break-word}.input-line .textarea-wrapper .terminal-input::selection{background:#ffffff4d}.input-line .textarea-wrapper .terminal-input{caret-shape:block}.input-line .textarea-wrapper .terminal-input:disabled{opacity:.5;cursor:not-allowed}.input-line .textarea-wrapper .terminal-input:-webkit-autofill{-webkit-text-fill-color:#e0e0e0;-webkit-box-shadow:0 0 0 1000px rgba(0,0,0,.9) inset}.input-line .textarea-wrapper .terminal-input::placeholder{color:#ffffff4d;opacity:1}.input-line .textarea-wrapper .block-cursor{position:absolute;width:10px;height:20px;background:#e0e0e0;opacity:0;pointer-events:none}.input-line .textarea-wrapper .block-cursor.visible{animation:blink 1s infinite}@keyframes blink{0%,50%{opacity:.8}51%,to{opacity:0}}:host:has(.terminal-window){height:100vh;overflow-y:auto}@container agent-container (max-width: 600px){:host{padding:0}.terminal-window{height:100%;max-height:100vh;max-width:100%;border-radius:0;border:none;box-shadow:none}.terminal-header{height:56px;padding:0 16px}.terminal-header .terminal-title{font-size:12px}.terminal-header .terminal-status{font-size:11px}.terminal-header .close-button{margin-right:.25rem}}@container agent-container (min-width: 601px) and (max-width: 900px){.terminal-window{max-width:100%;height:100%;border-radius:0}}@container agent-container (max-width: 400px){.terminal-header{height:56px;padding:0 12px}.terminal-header .close-button{margin-right:.2rem}.input-area{padding:12px 16px}.textarea-wrapper .arrow-prefix{font-size:13px;padding:10px 0 10px 12px}.textarea-wrapper .terminal-input{font-size:12px;padding:10px 12px 10px 6px;height:40px;min-height:40px;line-height:20px}}.ascii-art{font-family:Consolas,Monaco,Liberation Mono,Menlo,Courier New,monospace!important;font-size:10px!important;line-height:1.1!important;letter-spacing:0!important;font-weight:400!important;margin:1em 0!important;padding:1em!important;white-space:pre!important;overflow-x:auto!important;overflow-y:hidden!important;display:block!important;width:fit-content!important;background:#ffffff08;border:1px solid var(--border-SCOPED-IN-entrance-zJof);border-radius:4px;color:var(--accent-SCOPED-IN-entrance-zJof)!important;opacity:.9;text-shadow:0 0 10px var(--accent-SCOPED-IN-entrance-zJof),0 0 20px var(--accent-SCOPED-IN-entrance-zJof);-webkit-font-smoothing:none!important;-moz-osx-font-smoothing:unset!important;font-variant-ligatures:none!important;text-rendering:optimizeLegibility!important}@media (prefers-color-scheme: light){:host{--text: #333;--text-SCOPED-IN-entrance-zJof: var(--text);--user: #0066cc;--user-SCOPED-IN-entrance-zJof: var(--user);--sys: #666;--sys-SCOPED-IN-entrance-zJof: var(--sys);--border: #ddd;--border-SCOPED-IN-entrance-zJof: var(--border)}.terminal-window{background:#ffffffd9;box-shadow:0 10px 30px #00000014}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: XtermOrganism, selector: "organisms-xterm", outputs: ["terminalReady"] }], changeDetection: i0.ChangeDetectionStrategy.Default }); }
455
+ }
456
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: AgentTemplate, decorators: [{
457
+ type: Component,
458
+ args: [{ selector: 'templates-agent', imports: [
459
+ CommonModule,
460
+ FormsModule,
461
+ AutoLayoutFrame,
462
+ CardFrame,
463
+ ActionButtonsSectionOrganism,
464
+ HeadingOrganism,
465
+ NgAtomicFormSectionBuilder,
466
+ MatButtonModule,
467
+ MatIconModule,
468
+ MatTooltipModule,
469
+ XtermOrganism,
470
+ ], template: `
471
+ <div class="terminal-window">
472
+ <div class="terminal-header">
473
+ <button mat-icon-button class="close-button" (click)="closeSideApp($event)" matTooltip="閉じる">
474
+ <mat-icon>close</mat-icon>
475
+ </button>
476
+ <div class="terminal-title">Machina Agent</div>
477
+ <div class="terminal-status">{{ statusText }}</div>
478
+ </div>
479
+
480
+ <div class="terminal-body">
481
+ <organisms-xterm
482
+ class="terminal-display"
483
+ (terminalReady)="onTerminalReady($event)"
484
+ (click)="focusInput()"
485
+ #xtermComponent
486
+ ></organisms-xterm>
487
+ <div class="input-area">
488
+ <div class="input-line">
489
+ <span class="input-prefix">> x_x</span>
490
+ <div class="textarea-wrapper">
491
+ <span class="arrow-prefix">></span>
492
+ <div class="input-container">
493
+ <textarea
494
+ #inputField
495
+ class="terminal-input"
496
+ [(ngModel)]="currentInput"
497
+ (keydown.enter)="handleEnter($event)"
498
+ (keydown.arrowUp)="navigateHistory($event, -1)"
499
+ (keydown.arrowDown)="navigateHistory($event, 1)"
500
+ (keydown.control.k)="generateCommand($event)"
501
+ (keydown.meta.k)="generateCommand($event)"
502
+ (keydown)="preventPrefixDeletion($event)"
503
+ (input)="handleInput($event)"
504
+ (focus)="handleFocus()"
505
+ (blur)="handleBlur()"
506
+ (keyup)="updateCursorPosition()"
507
+ (click)="updateCursorPosition()"
508
+ (scroll)="updateCursorPosition()"
509
+ [disabled]="isProcessing"
510
+ placeholder="x_x about"
511
+ rows="1"
512
+ ></textarea>
513
+ <div class="block-cursor"
514
+ [class.visible]="showCursor"
515
+ [style.left.px]="cursorLeft"
516
+ [style.top.px]="cursorTop"
517
+ ></div>
518
+ </div>
519
+ </div>
520
+ </div>
521
+ </div>
522
+ </div>
523
+ </div>
524
+ `, host: {
525
+ class: 'template'
526
+ }, changeDetection: ChangeDetectionStrategy.Default, hostDirectives: [
527
+ {
528
+ directive: EntranceTemplateStore,
529
+ inputs: [
530
+ 'form',
531
+ 'actions',
532
+ 'title',
533
+ 'fieldMap',
534
+ ],
535
+ },
536
+ ], styles: [":host{--h-pad: 20px;--h-pad-SCOPED-IN-entrance-zJof: var(--h-pad);--text: #e0e0e0;--text-SCOPED-IN-entrance-zJof: var(--text);--user: #00ff00;--user-SCOPED-IN-entrance-zJof: var(--user);--sys: #888;--sys-SCOPED-IN-entrance-zJof: var(--sys);--accent: #ff79c6;--accent-SCOPED-IN-entrance-zJof: var(--accent);--border: rgba(51, 51, 51, .5);--border-SCOPED-IN-entrance-zJof: var(--border)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}:host{display:flex;justify-content:center;align-items:center;width:100%;height:100%;background:transparent;font-family:SF Mono,Monaco,monospace;container-type:inline-size;container-name:agent-container;transition:all .3s ease}.terminal-window{width:100%;max-width:900px;height:600px;background:#0a0a0a;border:1px solid var(--border-SCOPED-IN-entrance-zJof);border-radius:8px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 20px 40px #0000004d;animation:fadeIn .3s;transition:all .3s ease}.terminal-header{display:flex;justify-content:space-between;align-items:center;height:56px;padding:0 20px;background:#1a1a1a99;border-bottom:1px solid var(--border-SCOPED-IN-entrance-zJof);transition:all .3s ease;position:relative}.terminal-header .close-button{color:var(--sys-SCOPED-IN-entrance-zJof);margin-right:.5rem;opacity:.7}.terminal-header .close-button:hover{color:var(--text-SCOPED-IN-entrance-zJof);opacity:1}.terminal-header .terminal-title{font-size:13px;color:var(--text-SCOPED-IN-entrance-zJof);font-weight:500;flex:1}.terminal-header .terminal-status{font-size:12px;color:var(--sys-SCOPED-IN-entrance-zJof);opacity:.7}.terminal-body{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative;transition:all .3s ease}.terminal-body .terminal-display{flex:1;position:relative;background:#0a0a0a;overflow:hidden}.input-area{background:#000000e6;border-top:1px solid var(--border-SCOPED-IN-entrance-zJof);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:all .3s ease;padding:16px 20px}.input-line{display:block;position:relative}.input-line .input-prefix{display:none}.input-line .textarea-wrapper{display:flex;align-items:flex-start;position:relative;border:1px solid rgba(255,255,255,.2);border-radius:4px;transition:border-color .2s ease}.input-line .textarea-wrapper:focus-within{border-color:#fff6}.input-line .textarea-wrapper .arrow-prefix{color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;padding:12px 0 12px 16px;flex-shrink:0;pointer-events:none}.input-line .textarea-wrapper .input-container{flex:1;position:relative;overflow:hidden}.input-line .textarea-wrapper .terminal-input{width:100%;background:transparent;border:none;outline:none;color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;caret-color:transparent;padding:12px 16px 12px 8px;transition:none;resize:none;height:44px;min-height:44px;max-height:200px;overflow-y:auto;overflow-x:hidden;line-height:20px;box-sizing:border-box;white-space:pre-wrap;word-wrap:break-word}.input-line .textarea-wrapper .terminal-input::selection{background:#ffffff4d}.input-line .textarea-wrapper .terminal-input{caret-shape:block}.input-line .textarea-wrapper .terminal-input:disabled{opacity:.5;cursor:not-allowed}.input-line .textarea-wrapper .terminal-input:-webkit-autofill{-webkit-text-fill-color:#e0e0e0;-webkit-box-shadow:0 0 0 1000px rgba(0,0,0,.9) inset}.input-line .textarea-wrapper .terminal-input::placeholder{color:#ffffff4d;opacity:1}.input-line .textarea-wrapper .block-cursor{position:absolute;width:10px;height:20px;background:#e0e0e0;opacity:0;pointer-events:none}.input-line .textarea-wrapper .block-cursor.visible{animation:blink 1s infinite}@keyframes blink{0%,50%{opacity:.8}51%,to{opacity:0}}:host:has(.terminal-window){height:100vh;overflow-y:auto}@container agent-container (max-width: 600px){:host{padding:0}.terminal-window{height:100%;max-height:100vh;max-width:100%;border-radius:0;border:none;box-shadow:none}.terminal-header{height:56px;padding:0 16px}.terminal-header .terminal-title{font-size:12px}.terminal-header .terminal-status{font-size:11px}.terminal-header .close-button{margin-right:.25rem}}@container agent-container (min-width: 601px) and (max-width: 900px){.terminal-window{max-width:100%;height:100%;border-radius:0}}@container agent-container (max-width: 400px){.terminal-header{height:56px;padding:0 12px}.terminal-header .close-button{margin-right:.2rem}.input-area{padding:12px 16px}.textarea-wrapper .arrow-prefix{font-size:13px;padding:10px 0 10px 12px}.textarea-wrapper .terminal-input{font-size:12px;padding:10px 12px 10px 6px;height:40px;min-height:40px;line-height:20px}}.ascii-art{font-family:Consolas,Monaco,Liberation Mono,Menlo,Courier New,monospace!important;font-size:10px!important;line-height:1.1!important;letter-spacing:0!important;font-weight:400!important;margin:1em 0!important;padding:1em!important;white-space:pre!important;overflow-x:auto!important;overflow-y:hidden!important;display:block!important;width:fit-content!important;background:#ffffff08;border:1px solid var(--border-SCOPED-IN-entrance-zJof);border-radius:4px;color:var(--accent-SCOPED-IN-entrance-zJof)!important;opacity:.9;text-shadow:0 0 10px var(--accent-SCOPED-IN-entrance-zJof),0 0 20px var(--accent-SCOPED-IN-entrance-zJof);-webkit-font-smoothing:none!important;-moz-osx-font-smoothing:unset!important;font-variant-ligatures:none!important;text-rendering:optimizeLegibility!important}@media (prefers-color-scheme: light){:host{--text: #333;--text-SCOPED-IN-entrance-zJof: var(--text);--user: #0066cc;--user-SCOPED-IN-entrance-zJof: var(--user);--sys: #666;--sys-SCOPED-IN-entrance-zJof: var(--sys);--border: #ddd;--border-SCOPED-IN-entrance-zJof: var(--border)}.terminal-window{background:#ffffffd9;box-shadow:0 10px 30px #00000014}}\n"] }]
537
+ }] });
538
+ function provideAgentTemplate() {
539
+ return [
540
+ provideComponent(EntranceTemplateStore, () => AgentTemplate),
541
+ ];
542
+ }
543
+
544
+ /**
545
+ * Generated bundle index. Do not edit.
546
+ */
547
+
548
+ export { AgentTemplate, provideAgentTemplate };
549
+ //# sourceMappingURL=xxmachina-components-templates-agent.mjs.map