@shepai/cli 1.175.1 → 1.176.0-pr539.02342cf

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 (287) hide show
  1. package/apis/json-schema/PhaseTiming.yaml +30 -0
  2. package/apis/json-schema/TokenOptimizationConfig.yaml +36 -0
  3. package/apis/json-schema/WorkflowConfig.yaml +3 -0
  4. package/dist/packages/core/src/application/ports/output/agents/phase-timing-repository.interface.d.ts +8 -1
  5. package/dist/packages/core/src/application/ports/output/agents/phase-timing-repository.interface.d.ts.map +1 -1
  6. package/dist/packages/core/src/application/ports/output/index.d.ts +1 -1
  7. package/dist/packages/core/src/application/ports/output/index.d.ts.map +1 -1
  8. package/dist/packages/core/src/application/ports/output/services/alias-compression.interface.d.ts +45 -0
  9. package/dist/packages/core/src/application/ports/output/services/alias-compression.interface.d.ts.map +1 -0
  10. package/dist/packages/core/src/application/ports/output/services/alias-compression.interface.js +13 -0
  11. package/dist/packages/core/src/application/ports/output/services/command-output-filter.interface.d.ts +50 -0
  12. package/dist/packages/core/src/application/ports/output/services/command-output-filter.interface.d.ts.map +1 -0
  13. package/dist/packages/core/src/application/ports/output/services/command-output-filter.interface.js +13 -0
  14. package/dist/packages/core/src/application/ports/output/services/delta-context.interface.d.ts +57 -0
  15. package/dist/packages/core/src/application/ports/output/services/delta-context.interface.d.ts.map +1 -0
  16. package/dist/packages/core/src/application/ports/output/services/delta-context.interface.js +13 -0
  17. package/dist/packages/core/src/application/ports/output/services/index.d.ts +7 -0
  18. package/dist/packages/core/src/application/ports/output/services/index.d.ts.map +1 -1
  19. package/dist/packages/core/src/application/ports/output/services/optimization-metrics.interface.d.ts +45 -0
  20. package/dist/packages/core/src/application/ports/output/services/optimization-metrics.interface.d.ts.map +1 -0
  21. package/dist/packages/core/src/application/ports/output/services/optimization-metrics.interface.js +13 -0
  22. package/dist/packages/core/src/application/ports/output/services/prompt-optimizer.interface.d.ts +86 -0
  23. package/dist/packages/core/src/application/ports/output/services/prompt-optimizer.interface.d.ts.map +1 -0
  24. package/dist/packages/core/src/application/ports/output/services/prompt-optimizer.interface.js +13 -0
  25. package/dist/packages/core/src/application/ports/output/services/semantic-compressor.interface.d.ts +43 -0
  26. package/dist/packages/core/src/application/ports/output/services/semantic-compressor.interface.d.ts.map +1 -0
  27. package/dist/packages/core/src/application/ports/output/services/semantic-compressor.interface.js +13 -0
  28. package/dist/packages/core/src/application/ports/output/services/skill-routing.interface.d.ts +41 -0
  29. package/dist/packages/core/src/application/ports/output/services/skill-routing.interface.d.ts.map +1 -0
  30. package/dist/packages/core/src/application/ports/output/services/skill-routing.interface.js +12 -0
  31. package/dist/packages/core/src/domain/factories/settings-defaults.factory.d.ts.map +1 -1
  32. package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +9 -0
  33. package/dist/packages/core/src/domain/generated/output.d.ts +66 -0
  34. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  35. package/dist/packages/core/src/domain/generated/output.js +1 -0
  36. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  37. package/dist/packages/core/src/infrastructure/di/container.js +27 -0
  38. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +6 -0
  39. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
  40. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +41 -0
  41. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/055-add-token-optimization-config.d.ts +29 -0
  42. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/055-add-token-optimization-config.d.ts.map +1 -0
  43. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/055-add-token-optimization-config.js +77 -0
  44. package/dist/packages/core/src/infrastructure/repositories/sqlite-phase-timing.repository.d.ts +2 -1
  45. package/dist/packages/core/src/infrastructure/repositories/sqlite-phase-timing.repository.d.ts.map +1 -1
  46. package/dist/packages/core/src/infrastructure/repositories/sqlite-phase-timing.repository.js +72 -0
  47. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.d.ts.map +1 -1
  48. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.js +19 -3
  49. package/dist/packages/core/src/infrastructure/services/agents/analyze-repo/analyze-repository-graph.d.ts +1 -1
  50. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts +6 -1
  51. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts.map +1 -1
  52. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts +18 -1
  53. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts.map +1 -1
  54. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -1
  55. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +6 -0
  56. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts.map +1 -1
  57. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.js +17 -1
  58. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/prompt-optimization-context.d.ts +42 -0
  59. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/prompt-optimization-context.d.ts.map +1 -0
  60. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/prompt-optimization-context.js +92 -0
  61. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.d.ts +1 -0
  62. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.d.ts.map +1 -1
  63. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.js +5 -0
  64. package/dist/packages/core/src/infrastructure/services/token-optimization/alias-compression.service.d.ts +41 -0
  65. package/dist/packages/core/src/infrastructure/services/token-optimization/alias-compression.service.d.ts.map +1 -0
  66. package/dist/packages/core/src/infrastructure/services/token-optimization/alias-compression.service.js +111 -0
  67. package/dist/packages/core/src/infrastructure/services/token-optimization/command-output-filter.service.d.ts +22 -0
  68. package/dist/packages/core/src/infrastructure/services/token-optimization/command-output-filter.service.d.ts.map +1 -0
  69. package/dist/packages/core/src/infrastructure/services/token-optimization/command-output-filter.service.js +245 -0
  70. package/dist/packages/core/src/infrastructure/services/token-optimization/delta-context.service.d.ts +22 -0
  71. package/dist/packages/core/src/infrastructure/services/token-optimization/delta-context.service.d.ts.map +1 -0
  72. package/dist/packages/core/src/infrastructure/services/token-optimization/delta-context.service.js +50 -0
  73. package/dist/packages/core/src/infrastructure/services/token-optimization/optimization-metrics.service.d.ts +36 -0
  74. package/dist/packages/core/src/infrastructure/services/token-optimization/optimization-metrics.service.d.ts.map +1 -0
  75. package/dist/packages/core/src/infrastructure/services/token-optimization/optimization-metrics.service.js +123 -0
  76. package/dist/packages/core/src/infrastructure/services/token-optimization/prompt-optimizer.service.d.ts +57 -0
  77. package/dist/packages/core/src/infrastructure/services/token-optimization/prompt-optimizer.service.d.ts.map +1 -0
  78. package/dist/packages/core/src/infrastructure/services/token-optimization/prompt-optimizer.service.js +211 -0
  79. package/dist/packages/core/src/infrastructure/services/token-optimization/semantic-compressor.service.d.ts +34 -0
  80. package/dist/packages/core/src/infrastructure/services/token-optimization/semantic-compressor.service.d.ts.map +1 -0
  81. package/dist/packages/core/src/infrastructure/services/token-optimization/semantic-compressor.service.js +190 -0
  82. package/dist/packages/core/src/infrastructure/services/token-optimization/skill-routing.service.d.ts +26 -0
  83. package/dist/packages/core/src/infrastructure/services/token-optimization/skill-routing.service.d.ts.map +1 -0
  84. package/dist/packages/core/src/infrastructure/services/token-optimization/skill-routing.service.js +51 -0
  85. package/dist/translations/ar/common.json +1 -0
  86. package/dist/translations/de/common.json +1 -0
  87. package/dist/translations/en/common.json +1 -0
  88. package/dist/translations/es/common.json +1 -0
  89. package/dist/translations/fr/common.json +1 -0
  90. package/dist/translations/he/common.json +1 -0
  91. package/dist/translations/pt/common.json +1 -0
  92. package/dist/translations/ru/common.json +1 -0
  93. package/dist/translations/uk/cli.json +631 -0
  94. package/dist/translations/uk/common.json +56 -0
  95. package/dist/translations/uk/tui.json +134 -0
  96. package/dist/translations/uk/web.json +615 -0
  97. package/dist/tsconfig.build.tsbuildinfo +1 -1
  98. package/package.json +1 -1
  99. package/web/.next/BUILD_ID +1 -1
  100. package/web/.next/build-manifest.json +2 -2
  101. package/web/.next/fallback-build-manifest.json +2 -2
  102. package/web/.next/prerender-manifest.json +3 -3
  103. package/web/.next/required-server-files.js +3 -3
  104. package/web/.next/required-server-files.json +3 -3
  105. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
  106. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  107. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  108. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +27 -27
  109. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  110. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  111. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +30 -30
  112. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  113. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  114. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +38 -38
  115. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  116. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  117. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +38 -38
  118. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  119. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  120. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  121. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  122. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  123. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  124. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  125. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  126. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +27 -27
  127. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  128. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  129. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +30 -30
  130. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  131. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  132. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +38 -38
  133. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  134. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  135. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +38 -38
  136. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  137. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  138. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
  139. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  140. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  141. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  142. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  143. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  144. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  145. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  146. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  147. package/web/.next/server/app/_global-error.html +2 -2
  148. package/web/.next/server/app/_global-error.rsc +1 -1
  149. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  150. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  151. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  152. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  153. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  154. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
  155. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  156. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  157. package/web/.next/server/app/features/page/server-reference-manifest.json +6 -6
  158. package/web/.next/server/app/features/page.js.nft.json +1 -1
  159. package/web/.next/server/app/features/page_client-reference-manifest.js +1 -1
  160. package/web/.next/server/app/settings/page/server-reference-manifest.json +9 -9
  161. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  162. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  163. package/web/.next/server/app/skills/page/server-reference-manifest.json +13 -13
  164. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  165. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  166. package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
  167. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  168. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  169. package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
  170. package/web/.next/server/app/version/page.js.nft.json +1 -1
  171. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  172. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  173. package/web/.next/server/chunks/[root-of-the-server]__c78383b1._.js +1 -1
  174. package/web/.next/server/chunks/[root-of-the-server]__c78383b1._.js.map +1 -1
  175. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js +1 -1
  176. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
  177. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_ad0071c9.js +1 -1
  178. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_ad0071c9.js.map +1 -1
  179. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_90d98b2b.js +1 -1
  180. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_chat_page_actions_90d98b2b.js.map +1 -1
  181. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_d3828105.js +1 -1
  182. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_chat_page_actions_d3828105.js.map +1 -1
  183. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  184. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  185. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +2 -2
  186. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
  187. package/web/.next/server/chunks/ssr/[root-of-the-server]__1cd4327c._.js +1 -1
  188. package/web/.next/server/chunks/ssr/[root-of-the-server]__1cd4327c._.js.map +1 -1
  189. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js +1 -1
  190. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js.map +1 -1
  191. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  192. package/web/.next/server/chunks/ssr/[root-of-the-server]__51ec77a8._.js +1 -1
  193. package/web/.next/server/chunks/ssr/[root-of-the-server]__51ec77a8._.js.map +1 -1
  194. package/web/.next/server/chunks/ssr/[root-of-the-server]__540c615f._.js +2 -2
  195. package/web/.next/server/chunks/ssr/[root-of-the-server]__66047a1b._.js +1 -1
  196. package/web/.next/server/chunks/ssr/[root-of-the-server]__66047a1b._.js.map +1 -1
  197. package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js +1 -1
  198. package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js.map +1 -1
  199. package/web/.next/server/chunks/ssr/[root-of-the-server]__86ff0bc5._.js +1 -1
  200. package/web/.next/server/chunks/ssr/[root-of-the-server]__a932cd3a._.js +1 -1
  201. package/web/.next/server/chunks/ssr/[root-of-the-server]__a932cd3a._.js.map +1 -1
  202. package/web/.next/server/chunks/ssr/[root-of-the-server]__aa72e794._.js +1 -1
  203. package/web/.next/server/chunks/ssr/[root-of-the-server]__aa72e794._.js.map +1 -1
  204. package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js +1 -1
  205. package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js.map +1 -1
  206. package/web/.next/server/chunks/ssr/_05c23ad9._.js +1 -1
  207. package/web/.next/server/chunks/ssr/_05c23ad9._.js.map +1 -1
  208. package/web/.next/server/chunks/ssr/_16eb4fec._.js +1 -1
  209. package/web/.next/server/chunks/ssr/_16eb4fec._.js.map +1 -1
  210. package/web/.next/server/chunks/ssr/_1879404a._.js +1 -1
  211. package/web/.next/server/chunks/ssr/_295fffde._.js +1 -1
  212. package/web/.next/server/chunks/ssr/_295fffde._.js.map +1 -1
  213. package/web/.next/server/chunks/ssr/_34b0a7ad._.js +3 -0
  214. package/web/.next/server/chunks/ssr/{_f1776188._.js.map → _34b0a7ad._.js.map} +1 -1
  215. package/web/.next/server/chunks/ssr/{_ce75a825._.js → _39053f87._.js} +2 -2
  216. package/web/.next/server/chunks/ssr/{_ce75a825._.js.map → _39053f87._.js.map} +1 -1
  217. package/web/.next/server/chunks/ssr/_45496654._.js +1 -1
  218. package/web/.next/server/chunks/ssr/_45496654._.js.map +1 -1
  219. package/web/.next/server/chunks/ssr/_4cbb7f95._.js +1 -1
  220. package/web/.next/server/chunks/ssr/_4cbb7f95._.js.map +1 -1
  221. package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
  222. package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
  223. package/web/.next/server/chunks/ssr/{_81ef821b._.js → _66291662._.js} +2 -2
  224. package/web/.next/server/chunks/ssr/{_81ef821b._.js.map → _66291662._.js.map} +1 -1
  225. package/web/.next/server/chunks/ssr/_6abfa39e._.js +1 -1
  226. package/web/.next/server/chunks/ssr/_6abfa39e._.js.map +1 -1
  227. package/web/.next/server/chunks/ssr/_d9c0a97a._.js +1 -1
  228. package/web/.next/server/chunks/ssr/_f8c55130._.js +1 -1
  229. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  230. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  231. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
  232. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js.map +1 -1
  233. package/web/.next/server/chunks/ssr/src_presentation_web_17d39233._.js +1 -1
  234. package/web/.next/server/chunks/ssr/src_presentation_web_17d39233._.js.map +1 -1
  235. package/web/.next/server/chunks/ssr/src_presentation_web_54b02639._.js +2 -2
  236. package/web/.next/server/chunks/ssr/src_presentation_web_54b02639._.js.map +1 -1
  237. package/web/.next/server/chunks/ssr/src_presentation_web_7b7b9e3b._.js +2 -2
  238. package/web/.next/server/chunks/ssr/src_presentation_web_7b7b9e3b._.js.map +1 -1
  239. package/web/.next/server/chunks/ssr/src_presentation_web_807cba76._.js +1 -1
  240. package/web/.next/server/chunks/ssr/src_presentation_web_807cba76._.js.map +1 -1
  241. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_90b5e66e.js +1 -1
  242. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_90b5e66e.js.map +1 -1
  243. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_4ce30db7.js +1 -1
  244. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_4ce30db7.js.map +1 -1
  245. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_e4032193.js +1 -1
  246. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_e4032193.js.map +1 -1
  247. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
  248. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js +1 -1
  249. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js.map +1 -1
  250. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  251. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  252. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js +1 -1
  253. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_skills_8a174cac._.js.map +1 -1
  254. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_tools_tools-page-client_tsx_3d0aa70c._.js +1 -1
  255. package/web/.next/server/chunks/ssr/src_presentation_web_db9fa0c2._.js +1 -1
  256. package/web/.next/server/chunks/ssr/src_presentation_web_db9fa0c2._.js.map +1 -1
  257. package/web/.next/server/chunks/ssr/src_presentation_web_e1cd1869._.js +1 -1
  258. package/web/.next/server/chunks/ssr/src_presentation_web_e1cd1869._.js.map +1 -1
  259. package/web/.next/server/chunks/ssr/src_presentation_web_e3a30e30._.js +1 -1
  260. package/web/.next/server/chunks/ssr/src_presentation_web_e3a30e30._.js.map +1 -1
  261. package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js +1 -1
  262. package/web/.next/server/chunks/ssr/translations_23dd5e7e._.js.map +1 -1
  263. package/web/.next/server/pages/500.html +2 -2
  264. package/web/.next/server/server-reference-manifest.js +1 -1
  265. package/web/.next/server/server-reference-manifest.json +50 -50
  266. package/web/.next/static/chunks/{03219e57ab4dab05.js → 1bbf1ec4b25d4de8.js} +1 -1
  267. package/web/.next/static/chunks/{ed450778c582887c.js → 1fd5980d468143b3.js} +3 -3
  268. package/web/.next/static/chunks/{523caed4f5a9a78f.js → 2403588dafacbd4e.js} +1 -1
  269. package/web/.next/static/chunks/{b5218d35112c5b4b.js → 287fea380d8cc373.js} +1 -1
  270. package/web/.next/static/chunks/420c3bd9d5a22881.js +1 -0
  271. package/web/.next/static/chunks/{20e831d121ae5518.js → 4df18296f976f225.js} +1 -1
  272. package/web/.next/static/chunks/{feeecb1dc1648817.js → 5cddc4bace2ce528.js} +1 -1
  273. package/web/.next/static/chunks/{bf0d2eba02ad69a4.js → 6a3d4b6774ebcbff.js} +1 -1
  274. package/web/.next/static/chunks/{7b5bdecb2b254cd5.js → 6d33333b9382783a.js} +3 -3
  275. package/web/.next/static/chunks/{09b21da62ffd89d6.js → 73e0fa361f218bb0.js} +1 -1
  276. package/web/.next/static/chunks/{3240913baa13b564.js → 85ea0b80c5996155.js} +1 -1
  277. package/web/.next/static/chunks/{34073c7071fbc0bc.js → 97b1402b60fab8a2.js} +1 -1
  278. package/web/.next/static/chunks/{eb951d647c1f92e6.js → e5d2d6d17ea0472e.js} +1 -1
  279. package/web/.next/static/chunks/{b49ab0b290e9342d.js → e8444bf5f6c35f8b.js} +1 -1
  280. package/web/.next/static/chunks/f9d948464ed409cb.js +1 -0
  281. package/web/.next/static/chunks/{df22a970881f1da8.js → fb6b8fc0dac0dea9.js} +1 -1
  282. package/web/.next/server/chunks/ssr/_f1776188._.js +0 -3
  283. package/web/.next/static/chunks/b65e555419a0c664.js +0 -1
  284. package/web/.next/static/chunks/fe1670b9aae7de08.js +0 -1
  285. /package/web/.next/static/{JskTxIiYLT1ye2ta1GTlv → EYQFTbDa6VxVniUQK-bHc}/_buildManifest.js +0 -0
  286. /package/web/.next/static/{JskTxIiYLT1ye2ta1GTlv → EYQFTbDa6VxVniUQK-bHc}/_clientMiddlewareManifest.json +0 -0
  287. /package/web/.next/static/{JskTxIiYLT1ye2ta1GTlv → EYQFTbDa6VxVniUQK-bHc}/_ssgManifest.js +0 -0
@@ -36,6 +36,14 @@ function toDatabase(timing) {
36
36
  duration_api_ms: timing.durationApiMs != null ? Number(timing.durationApiMs) : null,
37
37
  exit_code: timing.exitCode ?? null,
38
38
  error_message: timing.errorMessage ?? null,
39
+ original_token_estimate: timing.originalTokenEstimate != null ? Number(timing.originalTokenEstimate) : null,
40
+ optimized_token_estimate: timing.optimizedTokenEstimate != null ? Number(timing.optimizedTokenEstimate) : null,
41
+ savings_percent: timing.savingsPercent != null ? Number(timing.savingsPercent) : null,
42
+ capabilities_applied: timing.capabilitiesApplied ?? null,
43
+ output_filter_lines_removed: timing.outputFilterLinesRemoved ?? null,
44
+ delta_context_files_skipped: timing.deltaContextFilesSkipped ?? null,
45
+ compression_ratio: timing.compressionRatio != null ? Number(timing.compressionRatio) : null,
46
+ aliases_created: timing.aliasesCreated ?? null,
39
47
  created_at: timing.createdAt instanceof Date ? timing.createdAt.getTime() : timing.createdAt,
40
48
  updated_at: timing.updatedAt instanceof Date ? timing.updatedAt.getTime() : timing.updatedAt,
41
49
  };
@@ -70,6 +78,22 @@ function fromDatabase(row) {
70
78
  ...(row.duration_api_ms !== null && { durationApiMs: BigInt(row.duration_api_ms) }),
71
79
  ...(row.exit_code !== null && { exitCode: row.exit_code }),
72
80
  ...(row.error_message !== null && { errorMessage: row.error_message }),
81
+ ...(row.original_token_estimate !== null && {
82
+ originalTokenEstimate: BigInt(row.original_token_estimate),
83
+ }),
84
+ ...(row.optimized_token_estimate !== null && {
85
+ optimizedTokenEstimate: BigInt(row.optimized_token_estimate),
86
+ }),
87
+ ...(row.savings_percent !== null && { savingsPercent: row.savings_percent }),
88
+ ...(row.capabilities_applied !== null && { capabilitiesApplied: row.capabilities_applied }),
89
+ ...(row.output_filter_lines_removed !== null && {
90
+ outputFilterLinesRemoved: row.output_filter_lines_removed,
91
+ }),
92
+ ...(row.delta_context_files_skipped !== null && {
93
+ deltaContextFilesSkipped: row.delta_context_files_skipped,
94
+ }),
95
+ ...(row.compression_ratio !== null && { compressionRatio: row.compression_ratio }),
96
+ ...(row.aliases_created !== null && { aliasesCreated: row.aliases_created }),
73
97
  };
74
98
  }
75
99
  /**
@@ -90,6 +114,10 @@ let SQLitePhaseTimingRepository = class SQLitePhaseTimingRepository {
90
114
  cache_creation_input_tokens, cache_read_input_tokens,
91
115
  cost_usd, num_turns, duration_api_ms,
92
116
  exit_code, error_message,
117
+ original_token_estimate, optimized_token_estimate,
118
+ savings_percent, capabilities_applied,
119
+ output_filter_lines_removed, delta_context_files_skipped,
120
+ compression_ratio, aliases_created,
93
121
  created_at, updated_at
94
122
  ) VALUES (
95
123
  @id, @agent_run_id, @phase, @started_at, @completed_at, @duration_ms,
@@ -98,6 +126,10 @@ let SQLitePhaseTimingRepository = class SQLitePhaseTimingRepository {
98
126
  @cache_creation_input_tokens, @cache_read_input_tokens,
99
127
  @cost_usd, @num_turns, @duration_api_ms,
100
128
  @exit_code, @error_message,
129
+ @original_token_estimate, @optimized_token_estimate,
130
+ @savings_percent, @capabilities_applied,
131
+ @output_filter_lines_removed, @delta_context_files_skipped,
132
+ @compression_ratio, @aliases_created,
101
133
  @created_at, @updated_at
102
134
  )
103
135
  `);
@@ -154,6 +186,38 @@ let SQLitePhaseTimingRepository = class SQLitePhaseTimingRepository {
154
186
  setClauses.push('error_message = @error_message');
155
187
  params.error_message = updates.errorMessage;
156
188
  }
189
+ if (updates.originalTokenEstimate !== undefined) {
190
+ setClauses.push('original_token_estimate = @original_token_estimate');
191
+ params.original_token_estimate = Number(updates.originalTokenEstimate);
192
+ }
193
+ if (updates.optimizedTokenEstimate !== undefined) {
194
+ setClauses.push('optimized_token_estimate = @optimized_token_estimate');
195
+ params.optimized_token_estimate = Number(updates.optimizedTokenEstimate);
196
+ }
197
+ if (updates.savingsPercent !== undefined) {
198
+ setClauses.push('savings_percent = @savings_percent');
199
+ params.savings_percent = Number(updates.savingsPercent);
200
+ }
201
+ if (updates.capabilitiesApplied !== undefined) {
202
+ setClauses.push('capabilities_applied = @capabilities_applied');
203
+ params.capabilities_applied = updates.capabilitiesApplied;
204
+ }
205
+ if (updates.outputFilterLinesRemoved !== undefined) {
206
+ setClauses.push('output_filter_lines_removed = @output_filter_lines_removed');
207
+ params.output_filter_lines_removed = updates.outputFilterLinesRemoved;
208
+ }
209
+ if (updates.deltaContextFilesSkipped !== undefined) {
210
+ setClauses.push('delta_context_files_skipped = @delta_context_files_skipped');
211
+ params.delta_context_files_skipped = updates.deltaContextFilesSkipped;
212
+ }
213
+ if (updates.compressionRatio !== undefined) {
214
+ setClauses.push('compression_ratio = @compression_ratio');
215
+ params.compression_ratio = Number(updates.compressionRatio);
216
+ }
217
+ if (updates.aliasesCreated !== undefined) {
218
+ setClauses.push('aliases_created = @aliases_created');
219
+ params.aliases_created = updates.aliasesCreated;
220
+ }
157
221
  const stmt = this.db.prepare(`UPDATE phase_timings SET ${setClauses.join(', ')} WHERE id = @id`);
158
222
  stmt.run(params);
159
223
  }
@@ -177,6 +241,14 @@ let SQLitePhaseTimingRepository = class SQLitePhaseTimingRepository {
177
241
  const stmt = this.db.prepare(`UPDATE phase_timings SET ${setClauses.join(', ')} WHERE id = @id`);
178
242
  stmt.run(params);
179
243
  }
244
+ async findById(id) {
245
+ const stmt = this.db.prepare('SELECT * FROM phase_timings WHERE id = ?');
246
+ const row = stmt.get(id);
247
+ if (!row) {
248
+ return null;
249
+ }
250
+ return fromDatabase(row);
251
+ }
180
252
  async findByRunId(agentRunId) {
181
253
  const stmt = this.db.prepare('SELECT * FROM phase_timings WHERE agent_run_id = ? ORDER BY created_at');
182
254
  const rows = stmt.all(agentRunId);
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite-settings.repository.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/repositories/sqlite-settings.repository.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8EAA8E,CAAC;AACxH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAOjE;;;GAGG;AACH,qBACa,wBAAyB,YAAW,mBAAmB;IACtD,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAElD;;;;;;OAMG;IACG,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAmFnD;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAgBtC;;;;;OAKG;IACG,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CA2FhD"}
1
+ {"version":3,"file":"sqlite-settings.repository.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/repositories/sqlite-settings.repository.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8EAA8E,CAAC;AACxH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAOjE;;;GAGG;AACH,qBACa,wBAAyB,YAAW,mBAAmB;IACtD,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAElD;;;;;;OAMG;IACG,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA2FnD;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAgBtC;;;;;OAKG;IACG,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAmGhD"}
@@ -73,7 +73,11 @@ let SQLiteSettingsRepository = class SQLiteSettingsRepository {
73
73
  interactive_agent_max_concurrent_sessions,
74
74
  auto_archive_delay_minutes,
75
75
  stage_timeout_fast_implement_ms,
76
- fab_position_swapped
76
+ fab_position_swapped,
77
+ skill_injection_enabled, skill_injection_skills,
78
+ token_opt_enabled, token_opt_output_filtering,
79
+ token_opt_skill_routing, token_opt_delta_context,
80
+ token_opt_semantic_compression, token_opt_alias_compression
77
81
  ) VALUES (
78
82
  @id, @created_at, @updated_at,
79
83
  @model_analyze, @model_requirements, @model_plan, @model_implement, @model_default,
@@ -105,7 +109,11 @@ let SQLiteSettingsRepository = class SQLiteSettingsRepository {
105
109
  @interactive_agent_max_concurrent_sessions,
106
110
  @auto_archive_delay_minutes,
107
111
  @stage_timeout_fast_implement_ms,
108
- @fab_position_swapped
112
+ @fab_position_swapped,
113
+ @skill_injection_enabled, @skill_injection_skills,
114
+ @token_opt_enabled, @token_opt_output_filtering,
115
+ @token_opt_skill_routing, @token_opt_delta_context,
116
+ @token_opt_semantic_compression, @token_opt_alias_compression
109
117
  )
110
118
  `);
111
119
  // Execute with named parameters (safe from SQL injection)
@@ -211,7 +219,15 @@ let SQLiteSettingsRepository = class SQLiteSettingsRepository {
211
219
  interactive_agent_max_concurrent_sessions = @interactive_agent_max_concurrent_sessions,
212
220
  auto_archive_delay_minutes = @auto_archive_delay_minutes,
213
221
  stage_timeout_fast_implement_ms = @stage_timeout_fast_implement_ms,
214
- fab_position_swapped = @fab_position_swapped
222
+ fab_position_swapped = @fab_position_swapped,
223
+ skill_injection_enabled = @skill_injection_enabled,
224
+ skill_injection_skills = @skill_injection_skills,
225
+ token_opt_enabled = @token_opt_enabled,
226
+ token_opt_output_filtering = @token_opt_output_filtering,
227
+ token_opt_skill_routing = @token_opt_skill_routing,
228
+ token_opt_delta_context = @token_opt_delta_context,
229
+ token_opt_semantic_compression = @token_opt_semantic_compression,
230
+ token_opt_alias_compression = @token_opt_alias_compression
215
231
  WHERE id = @id
216
232
  `);
217
233
  // Execute with named parameters (safe from SQL injection)
@@ -43,7 +43,7 @@ export declare function createAnalyzeRepositoryGraph(executor: IAgentExecutor, c
43
43
  repositoryPath?: string | undefined;
44
44
  analysisMarkdown?: string | undefined;
45
45
  error?: string | undefined;
46
- }, "__start__" | "analyze", {
46
+ }, "analyze" | "__start__", {
47
47
  repositoryPath: {
48
48
  (): import("@langchain/langgraph").LastValue<string>;
49
49
  (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
@@ -69,6 +69,7 @@ export declare function createFastFeatureAgentGraph(depsOrExecutor: FastFeatureA
69
69
  ciFixAttempts: number;
70
70
  ciFixHistory: import("../../../../domain/index.js").CiFixRecord[];
71
71
  ciFixStatus: "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted";
72
+ specFileHashes: Record<string, string>;
72
73
  }, {
73
74
  featureId?: string | undefined;
74
75
  repositoryPath?: string | undefined;
@@ -102,7 +103,8 @@ export declare function createFastFeatureAgentGraph(depsOrExecutor: FastFeatureA
102
103
  ciFixAttempts?: number | undefined;
103
104
  ciFixHistory?: import("../../../../domain/index.js").CiFixRecord[] | undefined;
104
105
  ciFixStatus?: "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted" | undefined;
105
- }, "__start__" | "fast-implement", {
106
+ specFileHashes?: Record<string, string> | undefined;
107
+ }, "fast-implement" | "__start__", {
106
108
  featureId: {
107
109
  (): import("@langchain/langgraph").LastValue<string>;
108
110
  (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
@@ -155,6 +157,7 @@ export declare function createFastFeatureAgentGraph(depsOrExecutor: FastFeatureA
155
157
  ciFixAttempts: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
156
158
  ciFixHistory: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").CiFixRecord[], import("../../../../domain/index.js").CiFixRecord[]>;
157
159
  ciFixStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted", "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted">;
160
+ specFileHashes: import("@langchain/langgraph").BinaryOperatorAggregate<Record<string, string>, Record<string, string>>;
158
161
  }, {
159
162
  featureId: {
160
163
  (): import("@langchain/langgraph").LastValue<string>;
@@ -208,6 +211,7 @@ export declare function createFastFeatureAgentGraph(depsOrExecutor: FastFeatureA
208
211
  ciFixAttempts: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
209
212
  ciFixHistory: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").CiFixRecord[], import("../../../../domain/index.js").CiFixRecord[]>;
210
213
  ciFixStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted", "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted">;
214
+ specFileHashes: import("@langchain/langgraph").BinaryOperatorAggregate<Record<string, string>, Record<string, string>>;
211
215
  }, import("@langchain/langgraph").StateDefinition, {
212
216
  "fast-implement": Partial<import("@langchain/langgraph").StateType<{
213
217
  featureId: {
@@ -262,6 +266,7 @@ export declare function createFastFeatureAgentGraph(depsOrExecutor: FastFeatureA
262
266
  ciFixAttempts: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
263
267
  ciFixHistory: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").CiFixRecord[], import("../../../../domain/index.js").CiFixRecord[]>;
264
268
  ciFixStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted", "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted">;
269
+ specFileHashes: import("@langchain/langgraph").BinaryOperatorAggregate<Record<string, string>, Record<string, string>>;
265
270
  }>>;
266
271
  }, unknown, unknown>;
267
272
  //# sourceMappingURL=fast-feature-agent-graph.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fast-feature-agent-graph.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAA0B,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAGpG,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGlF,OAAO,EAAE,sBAAsB,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE5E;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;CACjD;AAkBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,CACzC,cAAc,EAAE,yBAAyB,GAAG,cAAc,EAC1D,YAAY,CAAC,EAAE,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBA6BnC"}
1
+ {"version":3,"file":"fast-feature-agent-graph.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAA0B,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAGpG,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGlF,OAAO,EAAE,sBAAsB,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE5E;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;CACjD;AAkBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,CACzC,cAAc,EAAE,yBAAyB,GAAG,cAAc,EAC1D,YAAY,CAAC,EAAE,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBA6BnC"}
@@ -56,6 +56,7 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
56
56
  ciFixAttempts: number;
57
57
  ciFixHistory: import("../../../../domain/index.js").CiFixRecord[];
58
58
  ciFixStatus: "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted";
59
+ specFileHashes: Record<string, string>;
59
60
  }, {
60
61
  featureId?: string | undefined;
61
62
  repositoryPath?: string | undefined;
@@ -89,7 +90,8 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
89
90
  ciFixAttempts?: number | undefined;
90
91
  ciFixHistory?: import("../../../../domain/index.js").CiFixRecord[] | undefined;
91
92
  ciFixStatus?: "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted" | undefined;
92
- }, "implement" | "__start__" | "analyze" | "requirements" | "research" | "plan" | "validate_spec_analyze" | "validate_spec_requirements" | "validate_research" | "validate_plan_tasks" | "repair_spec_analyze" | "repair_spec_requirements" | "repair_research" | "repair_plan_tasks", {
93
+ specFileHashes?: Record<string, string> | undefined;
94
+ }, "analyze" | "requirements" | "research" | "plan" | "implement" | "__start__" | "validate_spec_analyze" | "validate_spec_requirements" | "validate_research" | "validate_plan_tasks" | "repair_spec_analyze" | "repair_spec_requirements" | "repair_research" | "repair_plan_tasks", {
93
95
  featureId: {
94
96
  (): import("@langchain/langgraph").LastValue<string>;
95
97
  (annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
@@ -142,6 +144,7 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
142
144
  ciFixAttempts: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
143
145
  ciFixHistory: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").CiFixRecord[], import("../../../../domain/index.js").CiFixRecord[]>;
144
146
  ciFixStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted", "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted">;
147
+ specFileHashes: import("@langchain/langgraph").BinaryOperatorAggregate<Record<string, string>, Record<string, string>>;
145
148
  }, {
146
149
  featureId: {
147
150
  (): import("@langchain/langgraph").LastValue<string>;
@@ -195,6 +198,7 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
195
198
  ciFixAttempts: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
196
199
  ciFixHistory: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").CiFixRecord[], import("../../../../domain/index.js").CiFixRecord[]>;
197
200
  ciFixStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted", "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted">;
201
+ specFileHashes: import("@langchain/langgraph").BinaryOperatorAggregate<Record<string, string>, Record<string, string>>;
198
202
  }, import("@langchain/langgraph").StateDefinition, {
199
203
  analyze: Partial<import("@langchain/langgraph").StateType<{
200
204
  featureId: {
@@ -249,6 +253,7 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
249
253
  ciFixAttempts: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
250
254
  ciFixHistory: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").CiFixRecord[], import("../../../../domain/index.js").CiFixRecord[]>;
251
255
  ciFixStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted", "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted">;
256
+ specFileHashes: import("@langchain/langgraph").BinaryOperatorAggregate<Record<string, string>, Record<string, string>>;
252
257
  }>>;
253
258
  requirements: Partial<import("@langchain/langgraph").StateType<{
254
259
  featureId: {
@@ -303,6 +308,7 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
303
308
  ciFixAttempts: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
304
309
  ciFixHistory: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").CiFixRecord[], import("../../../../domain/index.js").CiFixRecord[]>;
305
310
  ciFixStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted", "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted">;
311
+ specFileHashes: import("@langchain/langgraph").BinaryOperatorAggregate<Record<string, string>, Record<string, string>>;
306
312
  }>>;
307
313
  research: Partial<import("@langchain/langgraph").StateType<{
308
314
  featureId: {
@@ -357,6 +363,7 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
357
363
  ciFixAttempts: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
358
364
  ciFixHistory: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").CiFixRecord[], import("../../../../domain/index.js").CiFixRecord[]>;
359
365
  ciFixStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted", "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted">;
366
+ specFileHashes: import("@langchain/langgraph").BinaryOperatorAggregate<Record<string, string>, Record<string, string>>;
360
367
  }>>;
361
368
  plan: Partial<import("@langchain/langgraph").StateType<{
362
369
  featureId: {
@@ -411,6 +418,7 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
411
418
  ciFixAttempts: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
412
419
  ciFixHistory: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").CiFixRecord[], import("../../../../domain/index.js").CiFixRecord[]>;
413
420
  ciFixStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted", "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted">;
421
+ specFileHashes: import("@langchain/langgraph").BinaryOperatorAggregate<Record<string, string>, Record<string, string>>;
414
422
  }>>;
415
423
  implement: Partial<import("@langchain/langgraph").StateType<{
416
424
  featureId: {
@@ -465,6 +473,7 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
465
473
  ciFixAttempts: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
466
474
  ciFixHistory: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").CiFixRecord[], import("../../../../domain/index.js").CiFixRecord[]>;
467
475
  ciFixStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted", "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted">;
476
+ specFileHashes: import("@langchain/langgraph").BinaryOperatorAggregate<Record<string, string>, Record<string, string>>;
468
477
  }>>;
469
478
  validate_spec_analyze: Partial<import("@langchain/langgraph").StateType<{
470
479
  featureId: {
@@ -519,6 +528,7 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
519
528
  ciFixAttempts: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
520
529
  ciFixHistory: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").CiFixRecord[], import("../../../../domain/index.js").CiFixRecord[]>;
521
530
  ciFixStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted", "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted">;
531
+ specFileHashes: import("@langchain/langgraph").BinaryOperatorAggregate<Record<string, string>, Record<string, string>>;
522
532
  }>>;
523
533
  validate_spec_requirements: Partial<import("@langchain/langgraph").StateType<{
524
534
  featureId: {
@@ -573,6 +583,7 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
573
583
  ciFixAttempts: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
574
584
  ciFixHistory: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").CiFixRecord[], import("../../../../domain/index.js").CiFixRecord[]>;
575
585
  ciFixStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted", "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted">;
586
+ specFileHashes: import("@langchain/langgraph").BinaryOperatorAggregate<Record<string, string>, Record<string, string>>;
576
587
  }>>;
577
588
  validate_research: Partial<import("@langchain/langgraph").StateType<{
578
589
  featureId: {
@@ -627,6 +638,7 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
627
638
  ciFixAttempts: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
628
639
  ciFixHistory: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").CiFixRecord[], import("../../../../domain/index.js").CiFixRecord[]>;
629
640
  ciFixStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted", "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted">;
641
+ specFileHashes: import("@langchain/langgraph").BinaryOperatorAggregate<Record<string, string>, Record<string, string>>;
630
642
  }>>;
631
643
  validate_plan_tasks: Partial<import("@langchain/langgraph").StateType<{
632
644
  featureId: {
@@ -681,6 +693,7 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
681
693
  ciFixAttempts: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
682
694
  ciFixHistory: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").CiFixRecord[], import("../../../../domain/index.js").CiFixRecord[]>;
683
695
  ciFixStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted", "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted">;
696
+ specFileHashes: import("@langchain/langgraph").BinaryOperatorAggregate<Record<string, string>, Record<string, string>>;
684
697
  }>>;
685
698
  repair_spec_analyze: Partial<import("@langchain/langgraph").StateType<{
686
699
  featureId: {
@@ -735,6 +748,7 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
735
748
  ciFixAttempts: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
736
749
  ciFixHistory: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").CiFixRecord[], import("../../../../domain/index.js").CiFixRecord[]>;
737
750
  ciFixStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted", "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted">;
751
+ specFileHashes: import("@langchain/langgraph").BinaryOperatorAggregate<Record<string, string>, Record<string, string>>;
738
752
  }>>;
739
753
  repair_spec_requirements: Partial<import("@langchain/langgraph").StateType<{
740
754
  featureId: {
@@ -789,6 +803,7 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
789
803
  ciFixAttempts: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
790
804
  ciFixHistory: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").CiFixRecord[], import("../../../../domain/index.js").CiFixRecord[]>;
791
805
  ciFixStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted", "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted">;
806
+ specFileHashes: import("@langchain/langgraph").BinaryOperatorAggregate<Record<string, string>, Record<string, string>>;
792
807
  }>>;
793
808
  repair_research: Partial<import("@langchain/langgraph").StateType<{
794
809
  featureId: {
@@ -843,6 +858,7 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
843
858
  ciFixAttempts: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
844
859
  ciFixHistory: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").CiFixRecord[], import("../../../../domain/index.js").CiFixRecord[]>;
845
860
  ciFixStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted", "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted">;
861
+ specFileHashes: import("@langchain/langgraph").BinaryOperatorAggregate<Record<string, string>, Record<string, string>>;
846
862
  }>>;
847
863
  repair_plan_tasks: Partial<import("@langchain/langgraph").StateType<{
848
864
  featureId: {
@@ -897,6 +913,7 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
897
913
  ciFixAttempts: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
898
914
  ciFixHistory: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").CiFixRecord[], import("../../../../domain/index.js").CiFixRecord[]>;
899
915
  ciFixStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted", "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted">;
916
+ specFileHashes: import("@langchain/langgraph").BinaryOperatorAggregate<Record<string, string>, Record<string, string>>;
900
917
  }>>;
901
918
  }, unknown, unknown>;
902
919
  //# sourceMappingURL=feature-agent-graph.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"feature-agent-graph.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAOpG,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAclF,OAAO,EAAE,sBAAsB,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE5E;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;CACjD;AAwID;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,qBAAqB,GAAG,cAAc,EACtD,YAAY,CAAC,EAAE,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAgFnC"}
1
+ {"version":3,"file":"feature-agent-graph.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAOpG,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAclF,OAAO,EAAE,sBAAsB,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE5E;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;CACjD;AAwID;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,qBAAqB,GAAG,cAAc,EACtD,YAAY,CAAC,EAAE,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAgFnC"}
@@ -1 +1 @@
1
- {"version":3,"file":"feature-agent-worker.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG;AAEH,OAAO,kBAAkB,CAAC;AAgB1B,OAAO,EAAiC,KAAK,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAW7F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAkF1D;AAgCD;;;GAGG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAuS/D"}
1
+ {"version":3,"file":"feature-agent-worker.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG;AAEH,OAAO,kBAAkB,CAAC;AAgB1B,OAAO,EAAiC,KAAK,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAc7F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAkF1D;AAgCD;;;GAGG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAoT/D"}
@@ -21,6 +21,7 @@ import { initializeSettings } from '../../../services/settings.service.js';
21
21
  import { InitializeSettingsUseCase } from '../../../../application/use-cases/settings/initialize-settings.use-case.js';
22
22
  import { setHeartbeatContext } from './heartbeat.js';
23
23
  import { setPhaseTimingContext, recordLifecycleEvent } from './phase-timing-context.js';
24
+ import { setPromptOptimizationContext } from './prompt-optimization-context.js';
24
25
  import { setLifecycleContext } from './lifecycle-context.js';
25
26
  import { setLogPrefix, getLogPrefix } from './log-context.js';
26
27
  import { UpdateFeatureLifecycleUseCase } from '../../../../application/use-cases/features/update/update-feature-lifecycle.use-case.js';
@@ -229,6 +230,11 @@ export async function runWorker(args) {
229
230
  // Set phase timing context so executeNode() records per-phase durations
230
231
  const timingRepository = container.resolve('IPhaseTimingRepository');
231
232
  setPhaseTimingContext(args.runId, timingRepository);
233
+ // Set prompt optimization context so executeNode() can run the
234
+ // token-optimization layer between buildPrompt() and executor.execute().
235
+ const promptOptimizer = container.resolve('IPromptOptimizerService');
236
+ const optimizationMetricsService = container.resolve('IOptimizationMetricsService');
237
+ setPromptOptimizationContext(promptOptimizer, optimizationMetricsService, args.runId, args.featureId);
232
238
  // Capture repos for SIGTERM handler
233
239
  runRepoForSignal = runRepository;
234
240
  timingRepoForSignal = timingRepository;
@@ -1 +1 @@
1
- {"version":3,"file":"node-helpers.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node-helpers.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ import { interrupt, isGraphBubbleUp } from '@langchain/langgraph';
12
12
  import { hasSettings, getSettings } from '../../../../services/settings.service.js';
13
13
  import { reportNodeStart } from '../heartbeat.js';
14
14
  import { recordPhaseStart, recordPhaseEnd, recordApprovalWaitStart, } from '../phase-timing-context.js';
15
+ import { optimizePromptIfEnabled, recordOptimizationMetricsIfEnabled, } from '../prompt-optimization-context.js';
15
16
  import { updateNodeLifecycle } from '../lifecycle-context.js';
16
17
  import { getLogPrefix, setCurrentPhase } from '../log-context.js';
17
18
  /**
@@ -491,7 +492,18 @@ export function executeNode(nodeName, executor, buildPrompt) {
491
492
  }
492
493
  const startTime = Date.now();
493
494
  const resumePrefix = buildResumeContext(state.resumeReason);
494
- const prompt = resumePrefix + buildPrompt(state, log);
495
+ const rawPrompt = resumePrefix + buildPrompt(state, log);
496
+ // Token optimization layer — single interceptor between prompt build
497
+ // and executor invocation. Falls back to the raw prompt on any error
498
+ // so optimization failures can never break a phase.
499
+ const optimization = await optimizePromptIfEnabled(rawPrompt, nodeName, state.model, state.specFileHashes);
500
+ const prompt = optimization.prompt;
501
+ if (optimization.metrics) {
502
+ log.info(`Prompt optimized: ${optimization.metrics.originalTokenEstimate} → ` +
503
+ `${optimization.metrics.optimizedTokenEstimate} tokens ` +
504
+ `(${optimization.metrics.savingsPercent.toFixed(1)}% saved, ` +
505
+ `capabilities=${optimization.metrics.capabilitiesApplied.join(',') || 'none'})`);
506
+ }
495
507
  const options = buildExecutorOptions(state, undefined, nodeName);
496
508
  // Record phase start with pre-execution metadata
497
509
  const timingId = await recordPhaseStart(nodeName, {
@@ -517,6 +529,9 @@ export function executeNode(nodeName, executor, buildPrompt) {
517
529
  durationApiMs: result.usage?.durationApiMs,
518
530
  exitCode: 'success',
519
531
  });
532
+ // Persist optimization metrics on the same phase timing row.
533
+ // No-op when optimization is disabled or context is not set.
534
+ await recordOptimizationMetricsIfEnabled(timingId, optimization.metrics);
520
535
  // Safety net: undo spec commits if commitSpecs=false
521
536
  removeSpecCommitsIfNeeded(state, nodeName, log);
522
537
  // Mark phase complete BEFORE interrupting so that on resume the
@@ -528,6 +543,7 @@ export function executeNode(nodeName, executor, buildPrompt) {
528
543
  _approvalAction: null,
529
544
  _rejectionFeedback: null,
530
545
  _needsReexecution: false,
546
+ specFileHashes: optimization.specFileHashes,
531
547
  };
532
548
  // Human-in-the-loop: interrupt after node execution for review.
533
549
  // This is the ONLY interrupt() call in the entire execution path.
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Prompt Optimization Context
3
+ *
4
+ * Module-level singleton that exposes the token-optimization layer to
5
+ * executeNode() in node-helpers.ts without changing its public API.
6
+ *
7
+ * The worker calls setPromptOptimizationContext() once after DI init.
8
+ * Node helpers call optimizePromptIfEnabled() before invoking the agent
9
+ * executor and recordOptimizationMetricsIfEnabled() after the phase
10
+ * timing record is updated.
11
+ *
12
+ * Errors are swallowed so optimization failures never block graph execution.
13
+ */
14
+ import type { IPromptOptimizerService } from '../../../../application/ports/output/services/prompt-optimizer.interface.js';
15
+ import type { IOptimizationMetricsService } from '../../../../application/ports/output/services/optimization-metrics.interface.js';
16
+ import type { OptimizationMetrics } from '../../../../application/ports/output/services/prompt-optimizer.interface.js';
17
+ /**
18
+ * Set the prompt-optimization context. Called once by the worker after DI init.
19
+ */
20
+ export declare function setPromptOptimizationContext(optimizer: IPromptOptimizerService, metricsService: IOptimizationMetricsService, runId: string, featureId: string): void;
21
+ /**
22
+ * Clear the prompt-optimization context. Useful for testing.
23
+ */
24
+ export declare function clearPromptOptimizationContext(): void;
25
+ /** Result of an optimization attempt — exposes the prompt to send and metrics to record. */
26
+ export interface OptimizePromptResult {
27
+ prompt: string;
28
+ metrics: OptimizationMetrics | null;
29
+ specFileHashes: Record<string, string>;
30
+ }
31
+ /**
32
+ * Optimize the given prompt if the optimizer context is set and the
33
+ * master toggle is enabled. Falls back to a passthrough result on any
34
+ * error so node execution is never blocked by optimization failures.
35
+ */
36
+ export declare function optimizePromptIfEnabled(prompt: string, phaseName: string, modelId: string | undefined, previousSpecFileHashes: Record<string, string> | undefined): Promise<OptimizePromptResult>;
37
+ /**
38
+ * Persist optimization metrics on the given phase timing row.
39
+ * No-op if context is not set, timingId is null, or metrics are null.
40
+ */
41
+ export declare function recordOptimizationMetricsIfEnabled(timingId: string | null, metrics: OptimizationMetrics | null): Promise<void>;
42
+ //# sourceMappingURL=prompt-optimization-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-optimization-context.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/prompt-optimization-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mEAAmE,CAAC;AACjH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uEAAuE,CAAC;AACzH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mEAAmE,CAAC;AAS7G;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,uBAAuB,EAClC,cAAc,EAAE,2BAA2B,EAC3C,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAChB,IAAI,CAKN;AAED;;GAEG;AACH,wBAAgB,8BAA8B,IAAI,IAAI,CAKrD;AAED,4FAA4F;AAC5F,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACpC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAWD;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GACzD,OAAO,CAAC,oBAAoB,CAAC,CA4B/B;AAED;;;GAGG;AACH,wBAAsB,kCAAkC,CACtD,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,OAAO,EAAE,mBAAmB,GAAG,IAAI,GAClC,OAAO,CAAC,IAAI,CAAC,CAQf"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Prompt Optimization Context
3
+ *
4
+ * Module-level singleton that exposes the token-optimization layer to
5
+ * executeNode() in node-helpers.ts without changing its public API.
6
+ *
7
+ * The worker calls setPromptOptimizationContext() once after DI init.
8
+ * Node helpers call optimizePromptIfEnabled() before invoking the agent
9
+ * executor and recordOptimizationMetricsIfEnabled() after the phase
10
+ * timing record is updated.
11
+ *
12
+ * Errors are swallowed so optimization failures never block graph execution.
13
+ */
14
+ import { hasSettings, getSettings } from '../../../services/settings.service.js';
15
+ let contextOptimizer;
16
+ let contextMetricsService;
17
+ let contextRunId;
18
+ let contextFeatureId;
19
+ /**
20
+ * Set the prompt-optimization context. Called once by the worker after DI init.
21
+ */
22
+ export function setPromptOptimizationContext(optimizer, metricsService, runId, featureId) {
23
+ contextOptimizer = optimizer;
24
+ contextMetricsService = metricsService;
25
+ contextRunId = runId;
26
+ contextFeatureId = featureId;
27
+ }
28
+ /**
29
+ * Clear the prompt-optimization context. Useful for testing.
30
+ */
31
+ export function clearPromptOptimizationContext() {
32
+ contextOptimizer = undefined;
33
+ contextMetricsService = undefined;
34
+ contextRunId = undefined;
35
+ contextFeatureId = undefined;
36
+ }
37
+ /**
38
+ * Resolve the effective TokenOptimizationConfig from settings. Returns
39
+ * undefined if settings are not initialized.
40
+ */
41
+ function resolveConfig() {
42
+ if (!hasSettings())
43
+ return undefined;
44
+ return getSettings().workflow?.tokenOptimization;
45
+ }
46
+ /**
47
+ * Optimize the given prompt if the optimizer context is set and the
48
+ * master toggle is enabled. Falls back to a passthrough result on any
49
+ * error so node execution is never blocked by optimization failures.
50
+ */
51
+ export async function optimizePromptIfEnabled(prompt, phaseName, modelId, previousSpecFileHashes) {
52
+ if (!contextOptimizer || !contextRunId || !contextFeatureId) {
53
+ return { prompt, metrics: null, specFileHashes: previousSpecFileHashes ?? {} };
54
+ }
55
+ const config = resolveConfig();
56
+ if (!config?.enabled) {
57
+ return { prompt, metrics: null, specFileHashes: previousSpecFileHashes ?? {} };
58
+ }
59
+ try {
60
+ const result = await contextOptimizer.optimize(prompt, {
61
+ phaseName,
62
+ modelId,
63
+ featureId: contextFeatureId,
64
+ agentRunId: contextRunId,
65
+ previousSpecFileHashes,
66
+ config,
67
+ });
68
+ return {
69
+ prompt: result.prompt,
70
+ metrics: result.metrics,
71
+ specFileHashes: result.specFileHashes,
72
+ };
73
+ }
74
+ catch {
75
+ // Swallow — optimization failure must never block phase execution
76
+ return { prompt, metrics: null, specFileHashes: previousSpecFileHashes ?? {} };
77
+ }
78
+ }
79
+ /**
80
+ * Persist optimization metrics on the given phase timing row.
81
+ * No-op if context is not set, timingId is null, or metrics are null.
82
+ */
83
+ export async function recordOptimizationMetricsIfEnabled(timingId, metrics) {
84
+ if (!contextMetricsService || !timingId || !metrics)
85
+ return;
86
+ try {
87
+ await contextMetricsService.record(timingId, metrics);
88
+ }
89
+ catch {
90
+ // Swallow — metrics persistence failure is non-fatal
91
+ }
92
+ }
@@ -59,6 +59,7 @@ export declare const FeatureAgentAnnotation: import("@langchain/langgraph").Anno
59
59
  ciFixAttempts: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
60
60
  ciFixHistory: import("@langchain/langgraph").BinaryOperatorAggregate<CiFixRecord[], CiFixRecord[]>;
61
61
  ciFixStatus: import("@langchain/langgraph").BinaryOperatorAggregate<"success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted", "success" | "timeout" | "idle" | "watching" | "fixing" | "exhausted">;
62
+ specFileHashes: import("@langchain/langgraph").BinaryOperatorAggregate<Record<string, string>, Record<string, string>>;
62
63
  }>;
63
64
  export type FeatureAgentState = typeof FeatureAgentAnnotation.State;
64
65
  //# sourceMappingURL=state.d.ts.map