@code-yeongyu/senpi 2026.9.22-2 → 2026.9.22-3

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 (630) hide show
  1. package/CHANGELOG.md +37 -17
  2. package/dist/bundle/chunks/{anthropic-messages-2P7APOOQ.js → anthropic-messages-V4CUY3UU.js} +1 -1
  3. package/dist/bundle/chunks/{app-server-command-PRNA6QQU.js → app-server-command-P5WP2YVC.js} +2 -2
  4. package/dist/bundle/chunks/azure-openai-responses-SBCCU4KI.js +2 -0
  5. package/dist/bundle/chunks/chatgpt-subscription.js +75 -0
  6. package/dist/bundle/chunks/chunk-2VZJTDUX.js +2 -0
  7. package/dist/bundle/chunks/{chunk-BOZ37BOT.js → chunk-3KLWJIXM.js} +3 -4
  8. package/dist/bundle/chunks/{chunk-M2HSO7MH.js → chunk-3UO3QYMZ.js} +1 -1
  9. package/dist/bundle/chunks/{chunk-6OD4TT33.js → chunk-5T3V75HH.js} +113 -111
  10. package/dist/bundle/chunks/chunk-6KXIFAMC.js +11 -0
  11. package/dist/bundle/chunks/{chunk-UCPWK6TZ.js → chunk-6MIPLTQG.js} +1 -1
  12. package/dist/bundle/chunks/{chunk-JZ6YQU3A.js → chunk-7ZPFQY76.js} +3 -3
  13. package/dist/bundle/chunks/{chunk-MUYK27UR.js → chunk-AEJUOQ7U.js} +1 -1
  14. package/dist/bundle/chunks/{chunk-F3DXL5MX.js → chunk-AJ722VIQ.js} +1 -1
  15. package/dist/bundle/chunks/{chunk-VYIJQQ5I.js → chunk-DTD3QN3S.js} +1 -1
  16. package/dist/bundle/chunks/chunk-DY6FUAWH.js +2 -0
  17. package/dist/bundle/chunks/{chunk-5XC2FNJ5.js → chunk-GLDP7LH2.js} +1 -1
  18. package/dist/bundle/chunks/{chunk-OPNVT7BU.js → chunk-KB3DR2ZH.js} +1 -1
  19. package/dist/bundle/chunks/{chunk-JR4X6ECO.js → chunk-M4NQKQUK.js} +1 -1
  20. package/dist/bundle/chunks/{chunk-GXUYWMN2.js → chunk-PODQ2IEB.js} +1 -1
  21. package/dist/bundle/chunks/{chunk-ARJJU3MS.js → chunk-PU7UDZ5F.js} +1 -1
  22. package/dist/bundle/chunks/{chunk-64JQFFHH.js → chunk-SSJ5OP3B.js} +2 -2
  23. package/dist/bundle/chunks/{chunk-X63BXA24.js → chunk-TAFYWUE4.js} +1 -1
  24. package/dist/bundle/chunks/{chunk-KICRBRVS.js → chunk-TU37KLCN.js} +2 -2
  25. package/dist/bundle/chunks/{chunk-R6LVC7SP.js → chunk-TWTHGDQS.js} +4 -4
  26. package/dist/bundle/chunks/chunk-WS7QGU5H.js +8 -0
  27. package/dist/bundle/chunks/{chunk-IPRJIKLL.js → chunk-WSQMYWLV.js} +1 -1
  28. package/dist/bundle/chunks/chunk-ZBHRTH5C.js +2 -0
  29. package/dist/bundle/chunks/cli-main-O4CFWDWV.js +3 -0
  30. package/dist/bundle/chunks/{google-generative-ai-Y2IYMUVC.js → google-generative-ai-UJIX64UU.js} +1 -1
  31. package/dist/bundle/chunks/{google-vertex-TKBBMPHV.js → google-vertex-KJEY5SZY.js} +1 -1
  32. package/dist/bundle/chunks/help-fast-path-KFMAFECE.js +2 -0
  33. package/dist/bundle/chunks/host-command-JEBCPKMK.js +2 -0
  34. package/dist/bundle/chunks/host-lifecycle-FWIB56UI.js +3 -0
  35. package/dist/bundle/chunks/host-lifecycle.js +2 -2
  36. package/dist/bundle/chunks/{interactive-host-runtime-F5L4USLR.js → interactive-host-runtime-HBK4XNHJ.js} +1 -1
  37. package/dist/bundle/chunks/interactive-mode-WKFWOHXN.js +2 -0
  38. package/dist/bundle/chunks/{mistral-conversations-ZYDVFRYF.js → mistral-conversations-PNYVN6YU.js} +1 -1
  39. package/dist/bundle/chunks/{multi-session-host-EUTEGVLS.js → multi-session-host-DWBOLTS7.js} +2 -2
  40. package/dist/bundle/chunks/openai-codex-responses-TBF5EMKG.js +10 -0
  41. package/dist/bundle/chunks/{openai-completions-4V76L5ZJ.js → openai-completions-IJIBZB2G.js} +1 -1
  42. package/dist/bundle/chunks/{openai-images-4XAZQLDT.js → openai-images-JA5N5DUU.js} +1 -1
  43. package/dist/bundle/chunks/openai-responses-3XYO7ROE.js +2 -0
  44. package/dist/bundle/chunks/{openrouter-images-Z3WQ5BDR.js → openrouter-images-T4GY3JYM.js} +1 -1
  45. package/dist/bundle/chunks/{package-manager-cli-JPUWMUEJ.js → package-manager-cli-JUKHAT7U.js} +1 -1
  46. package/dist/bundle/chunks/{rotation-stream-S56Y7WMM.js → rotation-stream-67OZ4U6R.js} +1 -1
  47. package/dist/bundle/chunks/rpc-mode-746KEL7Z.js +2 -0
  48. package/dist/bundle/chunks/{session-picker-PFPJVVIC.js → session-picker-TO42QRV2.js} +1 -1
  49. package/dist/bundle/chunks/session-worker.js +399 -398
  50. package/dist/bundle/cli.js +1 -1
  51. package/dist/bundle/index.js +1 -1
  52. package/dist/bundle/rpc-entry.js +1 -1
  53. package/dist/cli/args.d.ts.map +1 -1
  54. package/dist/cli/args.js +10 -2
  55. package/dist/cli/args.js.map +1 -1
  56. package/dist/core/agent-session.d.ts +1 -1
  57. package/dist/core/agent-session.js +8 -8
  58. package/dist/core/agent-session.js.map +1 -1
  59. package/dist/core/auth-provider-key-migration.d.ts +27 -0
  60. package/dist/core/auth-provider-key-migration.d.ts.map +1 -0
  61. package/dist/core/auth-provider-key-migration.js +40 -0
  62. package/dist/core/auth-provider-key-migration.js.map +1 -0
  63. package/dist/core/auth-storage.d.ts +26 -1
  64. package/dist/core/auth-storage.d.ts.map +1 -1
  65. package/dist/core/auth-storage.js +93 -20
  66. package/dist/core/auth-storage.js.map +1 -1
  67. package/dist/core/credential-accounts.d.ts +1 -1
  68. package/dist/core/credential-accounts.d.ts.map +1 -1
  69. package/dist/core/credential-accounts.js +8 -5
  70. package/dist/core/credential-accounts.js.map +1 -1
  71. package/dist/core/credential-pool/env-slots.d.ts.map +1 -1
  72. package/dist/core/credential-pool/env-slots.js +5 -2
  73. package/dist/core/credential-pool/env-slots.js.map +1 -1
  74. package/dist/core/dynamic-prompt/build.js +1 -1
  75. package/dist/core/dynamic-prompt/build.js.map +1 -1
  76. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/account-command.d.ts +2 -2
  77. package/dist/core/extensions/builtin/anthropic-subscription/account-command.d.ts.map +1 -0
  78. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/account-command.js +24 -24
  79. package/dist/core/extensions/builtin/anthropic-subscription/account-command.js.map +1 -0
  80. package/dist/core/extensions/builtin/anthropic-subscription/account-events.d.ts.map +1 -0
  81. package/dist/core/extensions/builtin/anthropic-subscription/account-events.js.map +1 -0
  82. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/account-management.d.ts +1 -1
  83. package/dist/core/extensions/builtin/anthropic-subscription/account-management.d.ts.map +1 -0
  84. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/account-management.js +2 -2
  85. package/dist/core/extensions/builtin/anthropic-subscription/account-management.js.map +1 -0
  86. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/accounts.d.ts +8 -8
  87. package/dist/core/extensions/builtin/anthropic-subscription/accounts.d.ts.map +1 -0
  88. package/dist/core/extensions/builtin/anthropic-subscription/accounts.js.map +1 -0
  89. package/dist/core/extensions/builtin/anthropic-subscription/affinity.d.ts.map +1 -0
  90. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/affinity.js +2 -2
  91. package/dist/core/extensions/builtin/anthropic-subscription/affinity.js.map +1 -0
  92. package/dist/core/extensions/builtin/anthropic-subscription/api-id.d.ts.map +1 -0
  93. package/dist/core/extensions/builtin/anthropic-subscription/api-id.js.map +1 -0
  94. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/auth-attempt.d.ts +2 -2
  95. package/dist/core/extensions/builtin/anthropic-subscription/auth-attempt.d.ts.map +1 -0
  96. package/dist/core/extensions/builtin/anthropic-subscription/auth-attempt.js.map +1 -0
  97. package/dist/core/extensions/builtin/anthropic-subscription/auth-environment.d.ts.map +1 -0
  98. package/dist/core/extensions/builtin/anthropic-subscription/auth-environment.js.map +1 -0
  99. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/auth-lane.d.ts +5 -5
  100. package/dist/core/extensions/builtin/anthropic-subscription/auth-lane.d.ts.map +1 -0
  101. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/auth-lane.js +10 -10
  102. package/dist/core/extensions/builtin/anthropic-subscription/auth-lane.js.map +1 -0
  103. package/dist/core/extensions/builtin/anthropic-subscription/availability.d.ts.map +1 -0
  104. package/dist/core/extensions/builtin/anthropic-subscription/availability.js.map +1 -0
  105. package/dist/core/extensions/builtin/anthropic-subscription/bounded-queue.d.ts.map +1 -0
  106. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/bounded-queue.js +1 -1
  107. package/dist/core/extensions/builtin/anthropic-subscription/bounded-queue.js.map +1 -0
  108. package/dist/core/extensions/builtin/anthropic-subscription/config-dir-credentials.d.ts +18 -0
  109. package/dist/core/extensions/builtin/anthropic-subscription/config-dir-credentials.d.ts.map +1 -0
  110. package/dist/core/extensions/builtin/anthropic-subscription/config-dir-credentials.js +81 -0
  111. package/dist/core/extensions/builtin/anthropic-subscription/config-dir-credentials.js.map +1 -0
  112. package/dist/core/extensions/builtin/anthropic-subscription/content-blocks.d.ts.map +1 -0
  113. package/dist/core/extensions/builtin/anthropic-subscription/content-blocks.js.map +1 -0
  114. package/dist/core/extensions/builtin/anthropic-subscription/custom-tools-schema.d.ts.map +1 -0
  115. package/dist/core/extensions/builtin/anthropic-subscription/custom-tools-schema.js.map +1 -0
  116. package/dist/core/extensions/builtin/anthropic-subscription/custom-tools.d.ts.map +1 -0
  117. package/dist/core/extensions/builtin/anthropic-subscription/custom-tools.js.map +1 -0
  118. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/errors.d.ts +1 -1
  119. package/dist/core/extensions/builtin/anthropic-subscription/errors.d.ts.map +1 -0
  120. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/errors.js +1 -1
  121. package/dist/core/extensions/builtin/anthropic-subscription/errors.js.map +1 -0
  122. package/dist/core/extensions/builtin/anthropic-subscription/executable-path-lookup.d.ts.map +1 -0
  123. package/dist/core/extensions/builtin/anthropic-subscription/executable-path-lookup.js.map +1 -0
  124. package/dist/core/extensions/builtin/anthropic-subscription/executable.d.ts.map +1 -0
  125. package/dist/core/extensions/builtin/anthropic-subscription/executable.js.map +1 -0
  126. package/dist/core/extensions/builtin/anthropic-subscription/failover.d.ts.map +1 -0
  127. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/failover.js +1 -1
  128. package/dist/core/extensions/builtin/anthropic-subscription/failover.js.map +1 -0
  129. package/dist/core/extensions/builtin/anthropic-subscription/guidance.d.ts.map +1 -0
  130. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/guidance.js +2 -2
  131. package/dist/core/extensions/builtin/anthropic-subscription/guidance.js.map +1 -0
  132. package/dist/core/extensions/builtin/anthropic-subscription/index.d.ts +11 -0
  133. package/dist/core/extensions/builtin/anthropic-subscription/index.d.ts.map +1 -0
  134. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/index.js +19 -13
  135. package/dist/core/extensions/builtin/anthropic-subscription/index.js.map +1 -0
  136. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/oauth-login.d.ts +3 -3
  137. package/dist/core/extensions/builtin/anthropic-subscription/oauth-login.d.ts.map +1 -0
  138. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/oauth-login.js +3 -3
  139. package/dist/core/extensions/builtin/anthropic-subscription/oauth-login.js.map +1 -0
  140. package/dist/core/extensions/builtin/anthropic-subscription/options.d.ts +18 -0
  141. package/dist/core/extensions/builtin/anthropic-subscription/options.d.ts.map +1 -0
  142. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/options.js +3 -3
  143. package/dist/core/extensions/builtin/anthropic-subscription/options.js.map +1 -0
  144. package/dist/core/extensions/builtin/anthropic-subscription/prompt-bridge.d.ts.map +1 -0
  145. package/dist/core/extensions/builtin/anthropic-subscription/prompt-bridge.js.map +1 -0
  146. package/dist/core/extensions/builtin/anthropic-subscription/prompt-directive-dedupe.d.ts.map +1 -0
  147. package/dist/core/extensions/builtin/anthropic-subscription/prompt-directive-dedupe.js.map +1 -0
  148. package/dist/core/extensions/builtin/anthropic-subscription/refusal.d.ts.map +1 -0
  149. package/dist/core/extensions/builtin/anthropic-subscription/refusal.js.map +1 -0
  150. package/dist/core/extensions/builtin/anthropic-subscription/sdk-boundary.d.ts.map +1 -0
  151. package/dist/core/extensions/builtin/anthropic-subscription/sdk-boundary.js.map +1 -0
  152. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/sdk-boundary.lazy.d.ts +1 -1
  153. package/dist/core/extensions/builtin/anthropic-subscription/sdk-boundary.lazy.d.ts.map +1 -0
  154. package/dist/core/extensions/builtin/anthropic-subscription/sdk-boundary.lazy.js.map +1 -0
  155. package/dist/core/extensions/builtin/anthropic-subscription/session-binding-store.d.ts.map +1 -0
  156. package/dist/core/extensions/builtin/anthropic-subscription/session-binding-store.js.map +1 -0
  157. package/dist/core/extensions/builtin/anthropic-subscription/session-binding.d.ts.map +1 -0
  158. package/dist/core/extensions/builtin/anthropic-subscription/session-binding.js.map +1 -0
  159. package/dist/core/extensions/builtin/anthropic-subscription/session-commit-boundary.d.ts.map +1 -0
  160. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-commit-boundary.js +4 -3
  161. package/dist/core/extensions/builtin/anthropic-subscription/session-commit-boundary.js.map +1 -0
  162. package/dist/core/extensions/builtin/anthropic-subscription/session-continuity.d.ts.map +1 -0
  163. package/dist/core/extensions/builtin/anthropic-subscription/session-continuity.js.map +1 -0
  164. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-entry-annotations.d.ts +3 -3
  165. package/dist/core/extensions/builtin/anthropic-subscription/session-entry-annotations.d.ts.map +1 -0
  166. package/dist/core/extensions/builtin/anthropic-subscription/session-entry-annotations.js.map +1 -0
  167. package/dist/core/extensions/builtin/anthropic-subscription/session-observability.d.ts.map +1 -0
  168. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-observability.js +1 -1
  169. package/dist/core/extensions/builtin/anthropic-subscription/session-observability.js.map +1 -0
  170. package/dist/core/extensions/builtin/anthropic-subscription/session-reaper.d.ts.map +1 -0
  171. package/dist/core/extensions/builtin/anthropic-subscription/session-reaper.js.map +1 -0
  172. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-reattach.d.ts +5 -5
  173. package/dist/core/extensions/builtin/anthropic-subscription/session-reattach.d.ts.map +1 -0
  174. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-reattach.js +1 -1
  175. package/dist/core/extensions/builtin/anthropic-subscription/session-reattach.js.map +1 -0
  176. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-registry-pump.d.ts +2 -2
  177. package/dist/core/extensions/builtin/anthropic-subscription/session-registry-pump.d.ts.map +1 -0
  178. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-registry-pump.js +6 -6
  179. package/dist/core/extensions/builtin/anthropic-subscription/session-registry-pump.js.map +1 -0
  180. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-registry-state.d.ts +3 -3
  181. package/dist/core/extensions/builtin/anthropic-subscription/session-registry-state.d.ts.map +1 -0
  182. package/dist/core/extensions/builtin/anthropic-subscription/session-registry-state.js.map +1 -0
  183. package/dist/core/extensions/builtin/anthropic-subscription/session-registry-wiring.d.ts.map +1 -0
  184. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-registry-wiring.js +2 -2
  185. package/dist/core/extensions/builtin/anthropic-subscription/session-registry-wiring.js.map +1 -0
  186. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-registry.d.ts +12 -12
  187. package/dist/core/extensions/builtin/anthropic-subscription/session-registry.d.ts.map +1 -0
  188. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-registry.js +4 -4
  189. package/dist/core/extensions/builtin/anthropic-subscription/session-registry.js.map +1 -0
  190. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-restored-admission.d.ts +2 -2
  191. package/dist/core/extensions/builtin/anthropic-subscription/session-restored-admission.d.ts.map +1 -0
  192. package/dist/core/extensions/builtin/anthropic-subscription/session-restored-admission.js.map +1 -0
  193. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-stream.d.ts +2 -2
  194. package/dist/core/extensions/builtin/anthropic-subscription/session-stream.d.ts.map +1 -0
  195. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-stream.js +1 -1
  196. package/dist/core/extensions/builtin/anthropic-subscription/session-stream.js.map +1 -0
  197. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-sync.d.ts +5 -5
  198. package/dist/core/extensions/builtin/anthropic-subscription/session-sync.d.ts.map +1 -0
  199. package/dist/core/extensions/builtin/anthropic-subscription/session-sync.js.map +1 -0
  200. package/dist/core/extensions/builtin/anthropic-subscription/session-turn-attempt.d.ts +11 -0
  201. package/dist/core/extensions/builtin/anthropic-subscription/session-turn-attempt.d.ts.map +1 -0
  202. package/dist/core/extensions/builtin/anthropic-subscription/session-turn-attempt.js.map +1 -0
  203. package/dist/core/extensions/builtin/anthropic-subscription/session-turn-claim.d.ts +14 -0
  204. package/dist/core/extensions/builtin/anthropic-subscription/session-turn-claim.d.ts.map +1 -0
  205. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-turn-claim.js +1 -1
  206. package/dist/core/extensions/builtin/anthropic-subscription/session-turn-claim.js.map +1 -0
  207. package/dist/core/extensions/builtin/anthropic-subscription/session-turn-types.d.ts.map +1 -0
  208. package/dist/core/extensions/builtin/anthropic-subscription/session-turn-types.js.map +1 -0
  209. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/settings.d.ts +11 -11
  210. package/dist/core/extensions/builtin/anthropic-subscription/settings.d.ts.map +1 -0
  211. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/settings.js +9 -9
  212. package/dist/core/extensions/builtin/anthropic-subscription/settings.js.map +1 -0
  213. package/dist/core/extensions/builtin/anthropic-subscription/stream-events.d.ts.map +1 -0
  214. package/dist/core/extensions/builtin/anthropic-subscription/stream-events.js.map +1 -0
  215. package/dist/core/extensions/builtin/anthropic-subscription/stream-guidance.d.ts.map +1 -0
  216. package/dist/core/extensions/builtin/anthropic-subscription/stream-guidance.js.map +1 -0
  217. package/dist/core/extensions/builtin/anthropic-subscription/stream-protocol.d.ts.map +1 -0
  218. package/dist/core/extensions/builtin/anthropic-subscription/stream-protocol.js.map +1 -0
  219. package/dist/core/extensions/builtin/anthropic-subscription/stream.d.ts +3 -0
  220. package/dist/core/extensions/builtin/anthropic-subscription/stream.d.ts.map +1 -0
  221. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/stream.js +5 -5
  222. package/dist/core/extensions/builtin/anthropic-subscription/stream.js.map +1 -0
  223. package/dist/core/extensions/builtin/anthropic-subscription/system-prompt.d.ts.map +1 -0
  224. package/dist/core/extensions/builtin/anthropic-subscription/system-prompt.js.map +1 -0
  225. package/dist/core/extensions/builtin/anthropic-subscription/tool-watch.d.ts.map +1 -0
  226. package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/tool-watch.js +6 -2
  227. package/dist/core/extensions/builtin/anthropic-subscription/tool-watch.js.map +1 -0
  228. package/dist/core/extensions/builtin/anthropic-subscription/tools.d.ts.map +1 -0
  229. package/dist/core/extensions/builtin/anthropic-subscription/tools.js.map +1 -0
  230. package/dist/core/extensions/builtin/compaction/index.js +2 -2
  231. package/dist/core/extensions/builtin/compaction/index.js.map +1 -1
  232. package/dist/core/extensions/builtin/compaction/lane-policy.d.ts +5 -5
  233. package/dist/core/extensions/builtin/compaction/lane-policy.d.ts.map +1 -1
  234. package/dist/core/extensions/builtin/compaction/lane-policy.js +9 -9
  235. package/dist/core/extensions/builtin/compaction/lane-policy.js.map +1 -1
  236. package/dist/core/extensions/builtin/compaction/openai-remote-model.d.ts +1 -1
  237. package/dist/core/extensions/builtin/compaction/openai-remote-model.d.ts.map +1 -1
  238. package/dist/core/extensions/builtin/compaction/openai-remote-model.js +6 -6
  239. package/dist/core/extensions/builtin/compaction/openai-remote-model.js.map +1 -1
  240. package/dist/core/extensions/builtin/compaction/openai-remote.js +1 -1
  241. package/dist/core/extensions/builtin/compaction/openai-remote.js.map +1 -1
  242. package/dist/core/extensions/builtin/compaction/speculative-summary.js +2 -2
  243. package/dist/core/extensions/builtin/compaction/speculative-summary.js.map +1 -1
  244. package/dist/core/extensions/builtin/compaction/speculative.js +1 -1
  245. package/dist/core/extensions/builtin/compaction/speculative.js.map +1 -1
  246. package/dist/core/extensions/builtin/cursor-cli-oauth/account-command.js +1 -1
  247. package/dist/core/extensions/builtin/cursor-cli-oauth/account-command.js.map +1 -1
  248. package/dist/core/extensions/builtin/goal/terminal-provider-error.js +1 -1
  249. package/dist/core/extensions/builtin/goal/terminal-provider-error.js.map +1 -1
  250. package/dist/core/extensions/builtin/gpt-account.js +18 -18
  251. package/dist/core/extensions/builtin/gpt-account.js.map +1 -1
  252. package/dist/core/extensions/builtin/index.js +2 -2
  253. package/dist/core/extensions/builtin/index.js.map +1 -1
  254. package/dist/core/extensions/builtin/oauth-login-interaction.d.ts +2 -2
  255. package/dist/core/extensions/builtin/oauth-login-interaction.d.ts.map +1 -1
  256. package/dist/core/extensions/builtin/oauth-login-interaction.js +1 -1
  257. package/dist/core/extensions/builtin/oauth-login-interaction.js.map +1 -1
  258. package/dist/core/extensions/builtin/prompt-preset/file-operations.d.ts +9 -1
  259. package/dist/core/extensions/builtin/prompt-preset/file-operations.d.ts.map +1 -1
  260. package/dist/core/extensions/builtin/prompt-preset/file-operations.js +60 -17
  261. package/dist/core/extensions/builtin/prompt-preset/file-operations.js.map +1 -1
  262. package/dist/core/extensions/builtin/prompt-preset/gpt-5.2.d.ts.map +1 -1
  263. package/dist/core/extensions/builtin/prompt-preset/gpt-5.2.js +7 -3
  264. package/dist/core/extensions/builtin/prompt-preset/gpt-5.2.js.map +1 -1
  265. package/dist/core/extensions/builtin/prompt-preset/gpt-5.3-codex.d.ts.map +1 -1
  266. package/dist/core/extensions/builtin/prompt-preset/gpt-5.3-codex.js +7 -3
  267. package/dist/core/extensions/builtin/prompt-preset/gpt-5.3-codex.js.map +1 -1
  268. package/dist/core/extensions/builtin/prompt-preset/gpt-5.4.d.ts.map +1 -1
  269. package/dist/core/extensions/builtin/prompt-preset/gpt-5.4.js +7 -3
  270. package/dist/core/extensions/builtin/prompt-preset/gpt-5.4.js.map +1 -1
  271. package/dist/core/extensions/builtin/prompt-preset/gpt-5.5.js +1 -1
  272. package/dist/core/extensions/builtin/prompt-preset/gpt-5.5.js.map +1 -1
  273. package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.js +1 -1
  274. package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.js.map +1 -1
  275. package/dist/core/extensions/builtin/prompt-preset/gpt-5.d.ts.map +1 -1
  276. package/dist/core/extensions/builtin/prompt-preset/gpt-5.js +7 -3
  277. package/dist/core/extensions/builtin/prompt-preset/gpt-5.js.map +1 -1
  278. package/dist/core/extensions/builtin/prompt-preset/gpt-6-astra.js +1 -1
  279. package/dist/core/extensions/builtin/prompt-preset/gpt-6-astra.js.map +1 -1
  280. package/dist/core/extensions/builtin/prompt-preset/grok-4.5.js +2 -2
  281. package/dist/core/extensions/builtin/prompt-preset/grok-4.5.js.map +1 -1
  282. package/dist/core/extensions/builtin/rules/rules/constants.d.ts +1 -1
  283. package/dist/core/extensions/builtin/rules/rules/constants.js +1 -1
  284. package/dist/core/extensions/builtin/rules/rules/constants.js.map +1 -1
  285. package/dist/core/extensions/builtin/service-tier.js +3 -3
  286. package/dist/core/extensions/builtin/service-tier.js.map +1 -1
  287. package/dist/core/model-config.d.ts +3 -0
  288. package/dist/core/model-config.d.ts.map +1 -1
  289. package/dist/core/model-config.js +26 -3
  290. package/dist/core/model-config.js.map +1 -1
  291. package/dist/core/model-resolver.js +1 -1
  292. package/dist/core/model-resolver.js.map +1 -1
  293. package/dist/core/model-runtime.d.ts +2 -0
  294. package/dist/core/model-runtime.d.ts.map +1 -1
  295. package/dist/core/model-runtime.js +10 -2
  296. package/dist/core/model-runtime.js.map +1 -1
  297. package/dist/core/provider-display-names.d.ts.map +1 -1
  298. package/dist/core/provider-display-names.js +2 -1
  299. package/dist/core/provider-display-names.js.map +1 -1
  300. package/dist/core/retry-fallback/expansion.js +1 -1
  301. package/dist/core/retry-fallback/expansion.js.map +1 -1
  302. package/dist/core/retry-fallback/settings.d.ts +1 -1
  303. package/dist/core/retry-fallback/settings.js +1 -1
  304. package/dist/core/retry-fallback/settings.js.map +1 -1
  305. package/dist/core/session-manager.d.ts.map +1 -1
  306. package/dist/core/session-manager.js +16 -4
  307. package/dist/core/session-manager.js.map +1 -1
  308. package/dist/core/settings-manager.d.ts +5 -0
  309. package/dist/core/settings-manager.d.ts.map +1 -1
  310. package/dist/core/settings-manager.js +68 -2
  311. package/dist/core/settings-manager.js.map +1 -1
  312. package/dist/modes/app-server/server/account.d.ts +1 -1
  313. package/dist/modes/app-server/server/account.d.ts.map +1 -1
  314. package/dist/modes/app-server/server/account.js +6 -1
  315. package/dist/modes/app-server/server/account.js.map +1 -1
  316. package/dist/modes/app-server/server/server-core.js +1 -1
  317. package/dist/modes/app-server/server/server-core.js.map +1 -1
  318. package/dist/modes/interactive/components/progressive-transcript-container.d.ts +12 -0
  319. package/dist/modes/interactive/components/progressive-transcript-container.d.ts.map +1 -1
  320. package/dist/modes/interactive/components/progressive-transcript-container.js +17 -2
  321. package/dist/modes/interactive/components/progressive-transcript-container.js.map +1 -1
  322. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  323. package/dist/modes/interactive/interactive-mode.js +14 -1
  324. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  325. package/dist/modes/rpc/connection-handler.js +3 -3
  326. package/dist/modes/rpc/connection-handler.js.map +1 -1
  327. package/dist/modes/rpc/host-process-metrics.d.ts.map +1 -1
  328. package/dist/modes/rpc/host-process-metrics.js +24 -31
  329. package/dist/modes/rpc/host-process-metrics.js.map +1 -1
  330. package/dist/modes/rpc/host-process-table.d.ts +36 -0
  331. package/dist/modes/rpc/host-process-table.d.ts.map +1 -0
  332. package/dist/modes/rpc/host-process-table.js +162 -0
  333. package/dist/modes/rpc/host-process-table.js.map +1 -0
  334. package/dist/modes/rpc/rpc-client.d.ts +1 -1
  335. package/dist/modes/rpc/rpc-client.js +1 -1
  336. package/dist/modes/rpc/rpc-client.js.map +1 -1
  337. package/dist/modes/rpc/rpc-types.js.map +1 -1
  338. package/dist/modes/rpc/worker-session-registry.d.ts.map +1 -1
  339. package/dist/modes/rpc/worker-session-registry.js +30 -0
  340. package/dist/modes/rpc/worker-session-registry.js.map +1 -1
  341. package/docs/providers.md +9 -9
  342. package/docs/release-guide.md +1 -1
  343. package/docs/rpc.md +4 -4
  344. package/docs/settings.md +5 -5
  345. package/docs/usage.md +2 -2
  346. package/examples/extensions/AGENTS.md +1 -1
  347. package/examples/extensions/README.md +1 -1
  348. package/examples/extensions/{openai-codex-usage → chatgpt-subscription-usage}/codex-usage.ts +1 -1
  349. package/examples/extensions/{openai-codex-usage → chatgpt-subscription-usage}/index.ts +4 -4
  350. package/node_modules/@code-yeongyu/senpi-codemode/CHANGELOG.md +12 -0
  351. package/node_modules/@code-yeongyu/senpi-codemode/package.json +4 -4
  352. package/node_modules/@earendil-works/pi-agent-core/package.json +3 -3
  353. package/node_modules/@earendil-works/pi-ai/README.md +3 -3
  354. package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.js +1 -1
  355. package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.js.map +1 -1
  356. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses/fallback-state.d.ts +3 -3
  357. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses/fallback-state.d.ts.map +1 -1
  358. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses/fallback-state.js.map +1 -1
  359. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.d.ts +5 -5
  360. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.d.ts.map +1 -1
  361. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js +10 -10
  362. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js.map +1 -1
  363. package/node_modules/@earendil-works/pi-ai/dist/api/openai-prompt-cache.d.ts +1 -1
  364. package/node_modules/@earendil-works/pi-ai/dist/api/openai-prompt-cache.d.ts.map +1 -1
  365. package/node_modules/@earendil-works/pi-ai/dist/api/openai-prompt-cache.js +1 -1
  366. package/node_modules/@earendil-works/pi-ai/dist/api/openai-prompt-cache.js.map +1 -1
  367. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.js +1 -1
  368. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.js.map +1 -1
  369. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js +1 -1
  370. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js.map +1 -1
  371. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/{openai-codex.d.ts → chatgpt-subscription.d.ts} +3 -3
  372. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/chatgpt-subscription.d.ts.map +1 -0
  373. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/{openai-codex.js → chatgpt-subscription.js} +35 -35
  374. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/chatgpt-subscription.js.map +1 -0
  375. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/load.d.ts +2 -2
  376. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/load.d.ts.map +1 -1
  377. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/load.js +4 -3
  378. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/load.js.map +1 -1
  379. package/node_modules/@earendil-works/pi-ai/dist/auth/pool/slots.d.ts +7 -0
  380. package/node_modules/@earendil-works/pi-ai/dist/auth/pool/slots.d.ts.map +1 -1
  381. package/node_modules/@earendil-works/pi-ai/dist/auth/pool/slots.js +20 -2
  382. package/node_modules/@earendil-works/pi-ai/dist/auth/pool/slots.js.map +1 -1
  383. package/node_modules/@earendil-works/pi-ai/dist/bun-oauth.js +2 -2
  384. package/node_modules/@earendil-works/pi-ai/dist/bun-oauth.js.map +1 -1
  385. package/node_modules/@earendil-works/pi-ai/dist/index.d.ts +2 -2
  386. package/node_modules/@earendil-works/pi-ai/dist/index.d.ts.map +1 -1
  387. package/node_modules/@earendil-works/pi-ai/dist/index.js +1 -1
  388. package/node_modules/@earendil-works/pi-ai/dist/index.js.map +1 -1
  389. package/node_modules/@earendil-works/pi-ai/dist/legacy-provider-ids.d.ts +20 -0
  390. package/node_modules/@earendil-works/pi-ai/dist/legacy-provider-ids.d.ts.map +1 -1
  391. package/node_modules/@earendil-works/pi-ai/dist/legacy-provider-ids.js +56 -0
  392. package/node_modules/@earendil-works/pi-ai/dist/legacy-provider-ids.js.map +1 -1
  393. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts +2 -2
  394. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts.map +1 -1
  395. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js +2 -2
  396. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js.map +1 -1
  397. package/node_modules/@earendil-works/pi-ai/dist/providers/all.d.ts.map +1 -1
  398. package/node_modules/@earendil-works/pi-ai/dist/providers/all.js +2 -2
  399. package/node_modules/@earendil-works/pi-ai/dist/providers/all.js.map +1 -1
  400. package/node_modules/@earendil-works/pi-ai/dist/providers/chatgpt-subscription.d.ts +3 -0
  401. package/node_modules/@earendil-works/pi-ai/dist/providers/chatgpt-subscription.d.ts.map +1 -0
  402. package/node_modules/@earendil-works/pi-ai/dist/providers/chatgpt-subscription.js +22 -0
  403. package/node_modules/@earendil-works/pi-ai/dist/providers/chatgpt-subscription.js.map +1 -0
  404. package/node_modules/@earendil-works/pi-ai/dist/providers/chatgpt-subscription.models.d.ts +4 -0
  405. package/node_modules/@earendil-works/pi-ai/dist/providers/chatgpt-subscription.models.d.ts.map +1 -0
  406. package/node_modules/@earendil-works/pi-ai/dist/providers/chatgpt-subscription.models.js +6 -0
  407. package/node_modules/@earendil-works/pi-ai/dist/providers/chatgpt-subscription.models.js.map +1 -0
  408. package/node_modules/@earendil-works/pi-ai/dist/providers/data/.manifest.json +1 -1
  409. package/node_modules/@earendil-works/pi-ai/dist/providers/data/amazon-bedrock.json +1 -1
  410. package/node_modules/@earendil-works/pi-ai/dist/providers/data/anthropic.json +1 -1
  411. package/node_modules/@earendil-works/pi-ai/dist/providers/data/chatgpt-subscription.json +1 -0
  412. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openrouter.json +1 -1
  413. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +1 -1
  414. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts.map +1 -1
  415. package/node_modules/@earendil-works/pi-ai/dist/types.js.map +1 -1
  416. package/node_modules/@earendil-works/pi-ai/dist/utils/{openai-codex-auth.d.ts → chatgpt-subscription-auth.d.ts} +3 -3
  417. package/node_modules/@earendil-works/pi-ai/dist/utils/chatgpt-subscription-auth.d.ts.map +1 -0
  418. package/node_modules/@earendil-works/pi-ai/dist/utils/{openai-codex-auth.js → chatgpt-subscription-auth.js} +4 -4
  419. package/node_modules/@earendil-works/pi-ai/dist/utils/chatgpt-subscription-auth.js.map +1 -0
  420. package/node_modules/@earendil-works/pi-ai/package.json +2 -2
  421. package/node_modules/@earendil-works/pi-pty/package.json +1 -1
  422. package/node_modules/@earendil-works/pi-telemetry/package.json +1 -1
  423. package/node_modules/@earendil-works/pi-tui/package.json +1 -1
  424. package/package.json +7 -7
  425. package/dist/bundle/chunks/azure-openai-responses-3AH7MJWF.js +0 -2
  426. package/dist/bundle/chunks/chunk-56TWFZ2C.js +0 -2
  427. package/dist/bundle/chunks/chunk-JEFYJDHP.js +0 -8
  428. package/dist/bundle/chunks/chunk-K3HEWWSS.js +0 -2
  429. package/dist/bundle/chunks/chunk-NK2RNX25.js +0 -11
  430. package/dist/bundle/chunks/chunk-NMB4C6ZZ.js +0 -2
  431. package/dist/bundle/chunks/cli-main-AFJNXUSL.js +0 -3
  432. package/dist/bundle/chunks/help-fast-path-4KYBVD2Z.js +0 -2
  433. package/dist/bundle/chunks/host-command-OVA6GEWC.js +0 -2
  434. package/dist/bundle/chunks/host-lifecycle-IDQPLYEA.js +0 -3
  435. package/dist/bundle/chunks/interactive-mode-UFBSCOP7.js +0 -2
  436. package/dist/bundle/chunks/openai-codex-responses-MEIUNROM.js +0 -10
  437. package/dist/bundle/chunks/openai-codex.js +0 -75
  438. package/dist/bundle/chunks/openai-responses-YR7WRBG3.js +0 -2
  439. package/dist/bundle/chunks/rpc-mode-JDVHUBZY.js +0 -2
  440. package/dist/core/extensions/builtin/claude-sdk-oauth/account-command.d.ts.map +0 -1
  441. package/dist/core/extensions/builtin/claude-sdk-oauth/account-command.js.map +0 -1
  442. package/dist/core/extensions/builtin/claude-sdk-oauth/account-events.d.ts.map +0 -1
  443. package/dist/core/extensions/builtin/claude-sdk-oauth/account-events.js.map +0 -1
  444. package/dist/core/extensions/builtin/claude-sdk-oauth/account-management.d.ts.map +0 -1
  445. package/dist/core/extensions/builtin/claude-sdk-oauth/account-management.js.map +0 -1
  446. package/dist/core/extensions/builtin/claude-sdk-oauth/accounts.d.ts.map +0 -1
  447. package/dist/core/extensions/builtin/claude-sdk-oauth/accounts.js.map +0 -1
  448. package/dist/core/extensions/builtin/claude-sdk-oauth/affinity.d.ts.map +0 -1
  449. package/dist/core/extensions/builtin/claude-sdk-oauth/affinity.js.map +0 -1
  450. package/dist/core/extensions/builtin/claude-sdk-oauth/api-id.d.ts.map +0 -1
  451. package/dist/core/extensions/builtin/claude-sdk-oauth/api-id.js.map +0 -1
  452. package/dist/core/extensions/builtin/claude-sdk-oauth/auth-attempt.d.ts.map +0 -1
  453. package/dist/core/extensions/builtin/claude-sdk-oauth/auth-attempt.js.map +0 -1
  454. package/dist/core/extensions/builtin/claude-sdk-oauth/auth-environment.d.ts.map +0 -1
  455. package/dist/core/extensions/builtin/claude-sdk-oauth/auth-environment.js.map +0 -1
  456. package/dist/core/extensions/builtin/claude-sdk-oauth/auth-lane.d.ts.map +0 -1
  457. package/dist/core/extensions/builtin/claude-sdk-oauth/auth-lane.js.map +0 -1
  458. package/dist/core/extensions/builtin/claude-sdk-oauth/availability.d.ts.map +0 -1
  459. package/dist/core/extensions/builtin/claude-sdk-oauth/availability.js.map +0 -1
  460. package/dist/core/extensions/builtin/claude-sdk-oauth/bounded-queue.d.ts.map +0 -1
  461. package/dist/core/extensions/builtin/claude-sdk-oauth/bounded-queue.js.map +0 -1
  462. package/dist/core/extensions/builtin/claude-sdk-oauth/config-dir-credentials.d.ts +0 -3
  463. package/dist/core/extensions/builtin/claude-sdk-oauth/config-dir-credentials.d.ts.map +0 -1
  464. package/dist/core/extensions/builtin/claude-sdk-oauth/config-dir-credentials.js +0 -27
  465. package/dist/core/extensions/builtin/claude-sdk-oauth/config-dir-credentials.js.map +0 -1
  466. package/dist/core/extensions/builtin/claude-sdk-oauth/content-blocks.d.ts.map +0 -1
  467. package/dist/core/extensions/builtin/claude-sdk-oauth/content-blocks.js.map +0 -1
  468. package/dist/core/extensions/builtin/claude-sdk-oauth/custom-tools-schema.d.ts.map +0 -1
  469. package/dist/core/extensions/builtin/claude-sdk-oauth/custom-tools-schema.js.map +0 -1
  470. package/dist/core/extensions/builtin/claude-sdk-oauth/custom-tools.d.ts.map +0 -1
  471. package/dist/core/extensions/builtin/claude-sdk-oauth/custom-tools.js.map +0 -1
  472. package/dist/core/extensions/builtin/claude-sdk-oauth/errors.d.ts.map +0 -1
  473. package/dist/core/extensions/builtin/claude-sdk-oauth/errors.js.map +0 -1
  474. package/dist/core/extensions/builtin/claude-sdk-oauth/executable-path-lookup.d.ts.map +0 -1
  475. package/dist/core/extensions/builtin/claude-sdk-oauth/executable-path-lookup.js.map +0 -1
  476. package/dist/core/extensions/builtin/claude-sdk-oauth/executable.d.ts.map +0 -1
  477. package/dist/core/extensions/builtin/claude-sdk-oauth/executable.js.map +0 -1
  478. package/dist/core/extensions/builtin/claude-sdk-oauth/failover.d.ts.map +0 -1
  479. package/dist/core/extensions/builtin/claude-sdk-oauth/failover.js.map +0 -1
  480. package/dist/core/extensions/builtin/claude-sdk-oauth/guidance.d.ts.map +0 -1
  481. package/dist/core/extensions/builtin/claude-sdk-oauth/guidance.js.map +0 -1
  482. package/dist/core/extensions/builtin/claude-sdk-oauth/index.d.ts +0 -11
  483. package/dist/core/extensions/builtin/claude-sdk-oauth/index.d.ts.map +0 -1
  484. package/dist/core/extensions/builtin/claude-sdk-oauth/index.js.map +0 -1
  485. package/dist/core/extensions/builtin/claude-sdk-oauth/oauth-login.d.ts.map +0 -1
  486. package/dist/core/extensions/builtin/claude-sdk-oauth/oauth-login.js.map +0 -1
  487. package/dist/core/extensions/builtin/claude-sdk-oauth/options.d.ts +0 -18
  488. package/dist/core/extensions/builtin/claude-sdk-oauth/options.d.ts.map +0 -1
  489. package/dist/core/extensions/builtin/claude-sdk-oauth/options.js.map +0 -1
  490. package/dist/core/extensions/builtin/claude-sdk-oauth/prompt-bridge.d.ts.map +0 -1
  491. package/dist/core/extensions/builtin/claude-sdk-oauth/prompt-bridge.js.map +0 -1
  492. package/dist/core/extensions/builtin/claude-sdk-oauth/prompt-directive-dedupe.d.ts.map +0 -1
  493. package/dist/core/extensions/builtin/claude-sdk-oauth/prompt-directive-dedupe.js.map +0 -1
  494. package/dist/core/extensions/builtin/claude-sdk-oauth/refusal.d.ts.map +0 -1
  495. package/dist/core/extensions/builtin/claude-sdk-oauth/refusal.js.map +0 -1
  496. package/dist/core/extensions/builtin/claude-sdk-oauth/sdk-boundary.d.ts.map +0 -1
  497. package/dist/core/extensions/builtin/claude-sdk-oauth/sdk-boundary.js.map +0 -1
  498. package/dist/core/extensions/builtin/claude-sdk-oauth/sdk-boundary.lazy.d.ts.map +0 -1
  499. package/dist/core/extensions/builtin/claude-sdk-oauth/sdk-boundary.lazy.js.map +0 -1
  500. package/dist/core/extensions/builtin/claude-sdk-oauth/session-binding-store.d.ts.map +0 -1
  501. package/dist/core/extensions/builtin/claude-sdk-oauth/session-binding-store.js.map +0 -1
  502. package/dist/core/extensions/builtin/claude-sdk-oauth/session-binding.d.ts.map +0 -1
  503. package/dist/core/extensions/builtin/claude-sdk-oauth/session-binding.js.map +0 -1
  504. package/dist/core/extensions/builtin/claude-sdk-oauth/session-commit-boundary.d.ts.map +0 -1
  505. package/dist/core/extensions/builtin/claude-sdk-oauth/session-commit-boundary.js.map +0 -1
  506. package/dist/core/extensions/builtin/claude-sdk-oauth/session-continuity.d.ts.map +0 -1
  507. package/dist/core/extensions/builtin/claude-sdk-oauth/session-continuity.js.map +0 -1
  508. package/dist/core/extensions/builtin/claude-sdk-oauth/session-entry-annotations.d.ts.map +0 -1
  509. package/dist/core/extensions/builtin/claude-sdk-oauth/session-entry-annotations.js.map +0 -1
  510. package/dist/core/extensions/builtin/claude-sdk-oauth/session-observability.d.ts.map +0 -1
  511. package/dist/core/extensions/builtin/claude-sdk-oauth/session-observability.js.map +0 -1
  512. package/dist/core/extensions/builtin/claude-sdk-oauth/session-reaper.d.ts.map +0 -1
  513. package/dist/core/extensions/builtin/claude-sdk-oauth/session-reaper.js.map +0 -1
  514. package/dist/core/extensions/builtin/claude-sdk-oauth/session-reattach.d.ts.map +0 -1
  515. package/dist/core/extensions/builtin/claude-sdk-oauth/session-reattach.js.map +0 -1
  516. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-pump.d.ts.map +0 -1
  517. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-pump.js.map +0 -1
  518. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-state.d.ts.map +0 -1
  519. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-state.js.map +0 -1
  520. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.d.ts.map +0 -1
  521. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.js.map +0 -1
  522. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.d.ts.map +0 -1
  523. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.js.map +0 -1
  524. package/dist/core/extensions/builtin/claude-sdk-oauth/session-restored-admission.d.ts.map +0 -1
  525. package/dist/core/extensions/builtin/claude-sdk-oauth/session-restored-admission.js.map +0 -1
  526. package/dist/core/extensions/builtin/claude-sdk-oauth/session-stream.d.ts.map +0 -1
  527. package/dist/core/extensions/builtin/claude-sdk-oauth/session-stream.js.map +0 -1
  528. package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.d.ts.map +0 -1
  529. package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.js.map +0 -1
  530. package/dist/core/extensions/builtin/claude-sdk-oauth/session-turn-attempt.d.ts +0 -11
  531. package/dist/core/extensions/builtin/claude-sdk-oauth/session-turn-attempt.d.ts.map +0 -1
  532. package/dist/core/extensions/builtin/claude-sdk-oauth/session-turn-attempt.js.map +0 -1
  533. package/dist/core/extensions/builtin/claude-sdk-oauth/session-turn-claim.d.ts +0 -14
  534. package/dist/core/extensions/builtin/claude-sdk-oauth/session-turn-claim.d.ts.map +0 -1
  535. package/dist/core/extensions/builtin/claude-sdk-oauth/session-turn-claim.js.map +0 -1
  536. package/dist/core/extensions/builtin/claude-sdk-oauth/session-turn-types.d.ts.map +0 -1
  537. package/dist/core/extensions/builtin/claude-sdk-oauth/session-turn-types.js.map +0 -1
  538. package/dist/core/extensions/builtin/claude-sdk-oauth/settings.d.ts.map +0 -1
  539. package/dist/core/extensions/builtin/claude-sdk-oauth/settings.js.map +0 -1
  540. package/dist/core/extensions/builtin/claude-sdk-oauth/stream-events.d.ts.map +0 -1
  541. package/dist/core/extensions/builtin/claude-sdk-oauth/stream-events.js.map +0 -1
  542. package/dist/core/extensions/builtin/claude-sdk-oauth/stream-guidance.d.ts.map +0 -1
  543. package/dist/core/extensions/builtin/claude-sdk-oauth/stream-guidance.js.map +0 -1
  544. package/dist/core/extensions/builtin/claude-sdk-oauth/stream-protocol.d.ts.map +0 -1
  545. package/dist/core/extensions/builtin/claude-sdk-oauth/stream-protocol.js.map +0 -1
  546. package/dist/core/extensions/builtin/claude-sdk-oauth/stream.d.ts +0 -3
  547. package/dist/core/extensions/builtin/claude-sdk-oauth/stream.d.ts.map +0 -1
  548. package/dist/core/extensions/builtin/claude-sdk-oauth/stream.js.map +0 -1
  549. package/dist/core/extensions/builtin/claude-sdk-oauth/system-prompt.d.ts.map +0 -1
  550. package/dist/core/extensions/builtin/claude-sdk-oauth/system-prompt.js.map +0 -1
  551. package/dist/core/extensions/builtin/claude-sdk-oauth/tool-watch.d.ts.map +0 -1
  552. package/dist/core/extensions/builtin/claude-sdk-oauth/tool-watch.js.map +0 -1
  553. package/dist/core/extensions/builtin/claude-sdk-oauth/tools.d.ts.map +0 -1
  554. package/dist/core/extensions/builtin/claude-sdk-oauth/tools.js.map +0 -1
  555. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/openai-codex.d.ts.map +0 -1
  556. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/openai-codex.js.map +0 -1
  557. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openai-codex.json +0 -1
  558. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex.d.ts +0 -3
  559. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex.d.ts.map +0 -1
  560. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex.js +0 -22
  561. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex.js.map +0 -1
  562. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex.models.d.ts +0 -4
  563. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex.models.d.ts.map +0 -1
  564. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex.models.js +0 -6
  565. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex.models.js.map +0 -1
  566. package/node_modules/@earendil-works/pi-ai/dist/utils/openai-codex-auth.d.ts.map +0 -1
  567. package/node_modules/@earendil-works/pi-ai/dist/utils/openai-codex-auth.js.map +0 -1
  568. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/account-events.d.ts +0 -0
  569. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/account-events.js +0 -0
  570. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/accounts.js +0 -0
  571. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/affinity.d.ts +0 -0
  572. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/api-id.d.ts +0 -0
  573. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/api-id.js +0 -0
  574. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/auth-attempt.js +0 -0
  575. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/auth-environment.d.ts +0 -0
  576. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/auth-environment.js +0 -0
  577. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/availability.d.ts +0 -0
  578. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/availability.js +0 -0
  579. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/bounded-queue.d.ts +0 -0
  580. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/content-blocks.d.ts +0 -0
  581. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/content-blocks.js +0 -0
  582. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/custom-tools-schema.d.ts +0 -0
  583. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/custom-tools-schema.js +0 -0
  584. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/custom-tools.d.ts +0 -0
  585. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/custom-tools.js +0 -0
  586. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/executable-path-lookup.d.ts +0 -0
  587. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/executable-path-lookup.js +0 -0
  588. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/executable.d.ts +0 -0
  589. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/executable.js +0 -0
  590. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/failover.d.ts +0 -0
  591. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/guidance.d.ts +0 -0
  592. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/prompt-bridge.d.ts +0 -0
  593. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/prompt-bridge.js +0 -0
  594. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/prompt-directive-dedupe.d.ts +0 -0
  595. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/prompt-directive-dedupe.js +0 -0
  596. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/refusal.d.ts +0 -0
  597. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/refusal.js +0 -0
  598. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/sdk-boundary.d.ts +0 -0
  599. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/sdk-boundary.js +0 -0
  600. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/sdk-boundary.lazy.js +0 -0
  601. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-binding-store.d.ts +0 -0
  602. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-binding-store.js +0 -0
  603. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-binding.d.ts +0 -0
  604. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-binding.js +0 -0
  605. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-commit-boundary.d.ts +0 -0
  606. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-continuity.d.ts +0 -0
  607. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-continuity.js +0 -0
  608. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-entry-annotations.js +0 -0
  609. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-observability.d.ts +0 -0
  610. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-reaper.d.ts +0 -0
  611. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-reaper.js +0 -0
  612. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-registry-state.js +0 -0
  613. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-registry-wiring.d.ts +0 -0
  614. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-restored-admission.js +0 -0
  615. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-sync.js +0 -0
  616. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-turn-attempt.js +0 -0
  617. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-turn-types.d.ts +0 -0
  618. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/session-turn-types.js +0 -0
  619. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/stream-events.d.ts +0 -0
  620. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/stream-events.js +0 -0
  621. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/stream-guidance.d.ts +0 -0
  622. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/stream-guidance.js +0 -0
  623. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/stream-protocol.d.ts +0 -0
  624. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/stream-protocol.js +0 -0
  625. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/system-prompt.d.ts +0 -0
  626. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/system-prompt.js +0 -0
  627. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/tool-watch.d.ts +0 -0
  628. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/tools.d.ts +0 -0
  629. /package/dist/core/extensions/builtin/{claude-sdk-oauth → anthropic-subscription}/tools.js +0 -0
  630. /package/examples/extensions/{openai-codex-usage → chatgpt-subscription-usage}/README.md +0 -0
@@ -11,14 +11,14 @@
11
11
  * command for the same provider. Every dialog is also bound to the per-prompt
12
12
  * `AuthPrompt.signal`, so a manual-code dialog is released without cancelling
13
13
  * the login when the provider's local callback server wins the race
14
- * (`loginOpenAICodex`). `auth_url` opens the browser only in the TUI, because
14
+ * (`loginChatGptSubscription`). `auth_url` opens the browser only in the TUI, because
15
15
  * an RPC client renders the notice on its own machine.
16
16
  */
17
17
  import type { AuthInteraction } from "@earendil-works/pi-ai";
18
18
  import type { ExtensionCommandContext } from "../types.ts";
19
19
  export declare const LOGIN_CANCELLED_MESSAGE = "Login cancelled";
20
20
  export interface ExtensionLoginInteractionOptions {
21
- /** Provider name rendered in notices, e.g. "OpenAI Codex OAuth". */
21
+ /** Provider name rendered in notices, e.g. "ChatGPT Subscription OAuth". */
22
22
  readonly providerLabel: string;
23
23
  /** Provider id; a later login for the same id cancels this one. */
24
24
  readonly providerId?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"oauth-login-interaction.d.ts","sourceRoot":"","sources":["../../../../src/core/extensions/builtin/oauth-login-interaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAa,eAAe,EAAc,MAAM,uBAAuB,CAAC;AAEpF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAE3D,eAAO,MAAM,uBAAuB,oBAAoB,CAAC;AAEzD,MAAM,WAAW,gCAAgC;IAChD,oEAAoE;IACpE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,mEAAmE;IACnE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,kFAAkF;IAClF,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CAC3D;AAED,KAAK,mBAAmB,GAAG,IAAI,CAAC,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;AAuBxE,wBAAgB,+BAA+B,CAC9C,GAAG,EAAE,mBAAmB,EACxB,OAAO,EAAE,gCAAgC,GACvC,eAAe,CAQjB"}
1
+ {"version":3,"file":"oauth-login-interaction.d.ts","sourceRoot":"","sources":["../../../../src/core/extensions/builtin/oauth-login-interaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAa,eAAe,EAAc,MAAM,uBAAuB,CAAC;AAEpF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAE3D,eAAO,MAAM,uBAAuB,oBAAoB,CAAC;AAEzD,MAAM,WAAW,gCAAgC;IAChD,4EAA4E;IAC5E,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,mEAAmE;IACnE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,kFAAkF;IAClF,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CAC3D;AAED,KAAK,mBAAmB,GAAG,IAAI,CAAC,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;AAuBxE,wBAAgB,+BAA+B,CAC9C,GAAG,EAAE,mBAAmB,EACxB,OAAO,EAAE,gCAAgC,GACvC,eAAe,CAQjB"}
@@ -11,7 +11,7 @@
11
11
  * command for the same provider. Every dialog is also bound to the per-prompt
12
12
  * `AuthPrompt.signal`, so a manual-code dialog is released without cancelling
13
13
  * the login when the provider's local callback server wins the race
14
- * (`loginOpenAICodex`). `auth_url` opens the browser only in the TUI, because
14
+ * (`loginChatGptSubscription`). `auth_url` opens the browser only in the TUI, because
15
15
  * an RPC client renders the notice on its own machine.
16
16
  */
17
17
  import { openBrowser as openPlatformBrowser } from "../../../utils/open-browser.js";
@@ -1 +1 @@
1
- {"version":3,"file":"oauth-login-interaction.js","sourceRoot":"","sources":["../../../../src/core/extensions/builtin/oauth-login-interaction.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Relay a provider OAuth login (`modelRuntime.login`) onto the extension UI of\n * a slash command such as `/gpt-account add`, mirroring what the `/login`\n * dialog and `modes/rpc/login-prompts.ts` do for their surfaces.\n *\n * Three decisions are not visible from the code alone. The login owns its own\n * `AbortController` rather than borrowing `ctx.signal`: that signal belongs to\n * the active run, so binding a login to it made Esc/steer/timeout on the\n * response kill a browser login the user never acted on (#1542). The login is\n * cancelled only by dismissing one of its own dialogs or by re-issuing the\n * command for the same provider. Every dialog is also bound to the per-prompt\n * `AuthPrompt.signal`, so a manual-code dialog is released without cancelling\n * the login when the provider's local callback server wins the race\n * (`loginOpenAICodex`). `auth_url` opens the browser only in the TUI, because\n * an RPC client renders the notice on its own machine.\n */\n\nimport type { AuthEvent, AuthInteraction, AuthPrompt } from \"@earendil-works/pi-ai\";\nimport { openBrowser as openPlatformBrowser } from \"../../../utils/open-browser.ts\";\nimport type { ExtensionCommandContext } from \"../types.ts\";\n\nexport const LOGIN_CANCELLED_MESSAGE = \"Login cancelled\";\n\nexport interface ExtensionLoginInteractionOptions {\n\t/** Provider name rendered in notices, e.g. \"OpenAI Codex OAuth\". */\n\treadonly providerLabel: string;\n\t/** Provider id; a later login for the same id cancels this one. */\n\treadonly providerId?: string | undefined;\n\t/** Browser launcher for `auth_url` events in the TUI; tests inject a recorder. */\n\treadonly openBrowser?: ((url: string) => void) | undefined;\n}\n\ntype LoginCommandContext = Pick<ExtensionCommandContext, \"mode\" | \"ui\">;\n\nconst pendingLogins = new Map<string, AbortController>();\n\nfunction cancelledError(): Error {\n\treturn new Error(LOGIN_CANCELLED_MESSAGE);\n}\n\nfunction ownLoginController(providerId: string | undefined): AbortController {\n\tconst controller = new AbortController();\n\tif (providerId === undefined) return controller;\n\tpendingLogins.get(providerId)?.abort(cancelledError());\n\tpendingLogins.set(providerId, controller);\n\tcontroller.signal.addEventListener(\n\t\t\"abort\",\n\t\t() => {\n\t\t\tif (pendingLogins.get(providerId) === controller) pendingLogins.delete(providerId);\n\t\t},\n\t\t{ once: true },\n\t);\n\treturn controller;\n}\n\nexport function createExtensionLoginInteraction(\n\tctx: LoginCommandContext,\n\toptions: ExtensionLoginInteractionOptions,\n): AuthInteraction {\n\tconst openBrowser = options.openBrowser ?? openPlatformBrowser;\n\tconst controller = ownLoginController(options.providerId);\n\treturn {\n\t\tsignal: controller.signal,\n\t\tprompt: (prompt) => relayPrompt(ctx, controller, prompt),\n\t\tnotify: (event) => relayEvent(ctx, event, options.providerLabel, openBrowser),\n\t};\n}\n\nfunction dialogSignal(loginSignal: AbortSignal, promptSignal: AbortSignal | undefined): AbortSignal {\n\treturn promptSignal ? AbortSignal.any([loginSignal, promptSignal]) : loginSignal;\n}\n\nasync function relayPrompt(ctx: LoginCommandContext, login: AbortController, prompt: AuthPrompt): Promise<string> {\n\tconst signal = dialogSignal(login.signal, prompt.signal);\n\tif (signal.aborted) throw cancelledError();\n\tconst answer = await answerPrompt(ctx, prompt, { signal });\n\tif (signal.aborted) throw cancelledError();\n\tif (answer === undefined) {\n\t\t// The user dismissed the login's own dialog: that is the one cancellation the login owns.\n\t\tlogin.abort(cancelledError());\n\t\tthrow cancelledError();\n\t}\n\treturn answer;\n}\n\nasync function answerPrompt(\n\tctx: LoginCommandContext,\n\tprompt: AuthPrompt,\n\tdialogOptions: { signal: AbortSignal },\n): Promise<string | undefined> {\n\tswitch (prompt.type) {\n\t\tcase \"select\": {\n\t\t\tconst label = await ctx.ui.select(\n\t\t\t\tprompt.message,\n\t\t\t\tprompt.options.map((option) => option.label),\n\t\t\t\tdialogOptions,\n\t\t\t);\n\t\t\treturn prompt.options.find((option) => option.label === label)?.id;\n\t\t}\n\t\tcase \"text\":\n\t\tcase \"secret\":\n\t\tcase \"manual_code\":\n\t\t\treturn ctx.ui.input(prompt.message, prompt.placeholder, dialogOptions);\n\t}\n}\n\nfunction relayEvent(\n\tctx: LoginCommandContext,\n\tevent: AuthEvent,\n\tproviderLabel: string,\n\topenBrowser: (url: string) => void,\n): void {\n\tswitch (event.type) {\n\t\tcase \"auth_url\": {\n\t\t\tif (ctx.mode === \"tui\") openBrowser(event.url);\n\t\t\tconst lines = [`Open this URL to authorize ${providerLabel}:`, event.url];\n\t\t\tif (event.instructions) lines.push(event.instructions);\n\t\t\tctx.ui.notify(lines.join(\"\\n\"), \"info\");\n\t\t\treturn;\n\t\t}\n\t\tcase \"device_code\":\n\t\t\tctx.ui.notify(\n\t\t\t\t[\n\t\t\t\t\t`Open this URL to authorize ${providerLabel}:`,\n\t\t\t\t\tevent.verificationUri,\n\t\t\t\t\t`Enter code: ${event.userCode}`,\n\t\t\t\t].join(\"\\n\"),\n\t\t\t\t\"info\",\n\t\t\t);\n\t\t\treturn;\n\t\tcase \"info\": {\n\t\t\tconst links = (event.links ?? []).map((link) => (link.label ? `${link.label}: ${link.url}` : link.url));\n\t\t\tctx.ui.notify([event.message, ...links].join(\"\\n\"), \"info\");\n\t\t\treturn;\n\t\t}\n\t\tcase \"progress\":\n\t\t\tctx.ui.notify(event.message, \"info\");\n\t\t\treturn;\n\t}\n}\n"]}
1
+ {"version":3,"file":"oauth-login-interaction.js","sourceRoot":"","sources":["../../../../src/core/extensions/builtin/oauth-login-interaction.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Relay a provider OAuth login (`modelRuntime.login`) onto the extension UI of\n * a slash command such as `/gpt-account add`, mirroring what the `/login`\n * dialog and `modes/rpc/login-prompts.ts` do for their surfaces.\n *\n * Three decisions are not visible from the code alone. The login owns its own\n * `AbortController` rather than borrowing `ctx.signal`: that signal belongs to\n * the active run, so binding a login to it made Esc/steer/timeout on the\n * response kill a browser login the user never acted on (#1542). The login is\n * cancelled only by dismissing one of its own dialogs or by re-issuing the\n * command for the same provider. Every dialog is also bound to the per-prompt\n * `AuthPrompt.signal`, so a manual-code dialog is released without cancelling\n * the login when the provider's local callback server wins the race\n * (`loginChatGptSubscription`). `auth_url` opens the browser only in the TUI, because\n * an RPC client renders the notice on its own machine.\n */\n\nimport type { AuthEvent, AuthInteraction, AuthPrompt } from \"@earendil-works/pi-ai\";\nimport { openBrowser as openPlatformBrowser } from \"../../../utils/open-browser.ts\";\nimport type { ExtensionCommandContext } from \"../types.ts\";\n\nexport const LOGIN_CANCELLED_MESSAGE = \"Login cancelled\";\n\nexport interface ExtensionLoginInteractionOptions {\n\t/** Provider name rendered in notices, e.g. \"ChatGPT Subscription OAuth\". */\n\treadonly providerLabel: string;\n\t/** Provider id; a later login for the same id cancels this one. */\n\treadonly providerId?: string | undefined;\n\t/** Browser launcher for `auth_url` events in the TUI; tests inject a recorder. */\n\treadonly openBrowser?: ((url: string) => void) | undefined;\n}\n\ntype LoginCommandContext = Pick<ExtensionCommandContext, \"mode\" | \"ui\">;\n\nconst pendingLogins = new Map<string, AbortController>();\n\nfunction cancelledError(): Error {\n\treturn new Error(LOGIN_CANCELLED_MESSAGE);\n}\n\nfunction ownLoginController(providerId: string | undefined): AbortController {\n\tconst controller = new AbortController();\n\tif (providerId === undefined) return controller;\n\tpendingLogins.get(providerId)?.abort(cancelledError());\n\tpendingLogins.set(providerId, controller);\n\tcontroller.signal.addEventListener(\n\t\t\"abort\",\n\t\t() => {\n\t\t\tif (pendingLogins.get(providerId) === controller) pendingLogins.delete(providerId);\n\t\t},\n\t\t{ once: true },\n\t);\n\treturn controller;\n}\n\nexport function createExtensionLoginInteraction(\n\tctx: LoginCommandContext,\n\toptions: ExtensionLoginInteractionOptions,\n): AuthInteraction {\n\tconst openBrowser = options.openBrowser ?? openPlatformBrowser;\n\tconst controller = ownLoginController(options.providerId);\n\treturn {\n\t\tsignal: controller.signal,\n\t\tprompt: (prompt) => relayPrompt(ctx, controller, prompt),\n\t\tnotify: (event) => relayEvent(ctx, event, options.providerLabel, openBrowser),\n\t};\n}\n\nfunction dialogSignal(loginSignal: AbortSignal, promptSignal: AbortSignal | undefined): AbortSignal {\n\treturn promptSignal ? AbortSignal.any([loginSignal, promptSignal]) : loginSignal;\n}\n\nasync function relayPrompt(ctx: LoginCommandContext, login: AbortController, prompt: AuthPrompt): Promise<string> {\n\tconst signal = dialogSignal(login.signal, prompt.signal);\n\tif (signal.aborted) throw cancelledError();\n\tconst answer = await answerPrompt(ctx, prompt, { signal });\n\tif (signal.aborted) throw cancelledError();\n\tif (answer === undefined) {\n\t\t// The user dismissed the login's own dialog: that is the one cancellation the login owns.\n\t\tlogin.abort(cancelledError());\n\t\tthrow cancelledError();\n\t}\n\treturn answer;\n}\n\nasync function answerPrompt(\n\tctx: LoginCommandContext,\n\tprompt: AuthPrompt,\n\tdialogOptions: { signal: AbortSignal },\n): Promise<string | undefined> {\n\tswitch (prompt.type) {\n\t\tcase \"select\": {\n\t\t\tconst label = await ctx.ui.select(\n\t\t\t\tprompt.message,\n\t\t\t\tprompt.options.map((option) => option.label),\n\t\t\t\tdialogOptions,\n\t\t\t);\n\t\t\treturn prompt.options.find((option) => option.label === label)?.id;\n\t\t}\n\t\tcase \"text\":\n\t\tcase \"secret\":\n\t\tcase \"manual_code\":\n\t\t\treturn ctx.ui.input(prompt.message, prompt.placeholder, dialogOptions);\n\t}\n}\n\nfunction relayEvent(\n\tctx: LoginCommandContext,\n\tevent: AuthEvent,\n\tproviderLabel: string,\n\topenBrowser: (url: string) => void,\n): void {\n\tswitch (event.type) {\n\t\tcase \"auth_url\": {\n\t\t\tif (ctx.mode === \"tui\") openBrowser(event.url);\n\t\t\tconst lines = [`Open this URL to authorize ${providerLabel}:`, event.url];\n\t\t\tif (event.instructions) lines.push(event.instructions);\n\t\t\tctx.ui.notify(lines.join(\"\\n\"), \"info\");\n\t\t\treturn;\n\t\t}\n\t\tcase \"device_code\":\n\t\t\tctx.ui.notify(\n\t\t\t\t[\n\t\t\t\t\t`Open this URL to authorize ${providerLabel}:`,\n\t\t\t\t\tevent.verificationUri,\n\t\t\t\t\t`Enter code: ${event.userCode}`,\n\t\t\t\t].join(\"\\n\"),\n\t\t\t\t\"info\",\n\t\t\t);\n\t\t\treturn;\n\t\tcase \"info\": {\n\t\t\tconst links = (event.links ?? []).map((link) => (link.label ? `${link.label}: ${link.url}` : link.url));\n\t\t\tctx.ui.notify([event.message, ...links].join(\"\\n\"), \"info\");\n\t\t\treturn;\n\t\t}\n\t\tcase \"progress\":\n\t\t\tctx.ui.notify(event.message, \"info\");\n\t\t\treturn;\n\t}\n}\n"]}
@@ -1,2 +1,10 @@
1
- export declare function buildFileOperationsTuning(): string;
1
+ export type FileMutationMode = "apply-patch" | "edit-write" | "none";
2
+ export interface FileMutationRouting {
3
+ mode: FileMutationMode;
4
+ tools: string[];
5
+ }
6
+ export declare function resolveFileMutationRouting(toolNames: readonly string[]): FileMutationRouting;
7
+ export declare function buildFileOperationsTuning(options: {
8
+ toolNames: readonly string[];
9
+ }): string;
2
10
  //# sourceMappingURL=file-operations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-operations.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/file-operations.ts"],"names":[],"mappings":"AAmBA,wBAAgB,yBAAyB,IAAI,MAAM,CAUlD"}
1
+ {"version":3,"file":"file-operations.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/file-operations.ts"],"names":[],"mappings":"AAoCA,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG,YAAY,GAAG,MAAM,CAAC;AAErE,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,MAAM,EAAE,CAAC;CAChB;AAGD,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,mBAAmB,CAS5F;AAUD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE;IAAE,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAAG,MAAM,CAiC3F"}
@@ -1,4 +1,4 @@
1
- // Codex-style "File operations" tuning block, shared by every GPT-5.x preset.
1
+ // Codex-style "File operations" tuning block.
2
2
  //
3
3
  // This is the senpi equivalent of codex-rs/core/gpt_5_2_prompt.md's Task
4
4
  // execution + Shell commands + apply_patch sections, collapsed into a single
@@ -8,24 +8,67 @@
8
8
  // explicit "Do not use python scripts to attempt to output larger chunks of a
9
9
  // file" line by GPT-5.1.
10
10
  //
11
+ // The block is rendered from the session's ACTIVE tool names, never from the
12
+ // preset that happens to be resolved (#1968). `apply_patch` only exists for GPT
13
+ // ids on an OpenAI-family API, so a preset-driven block told a Grok 4.5 user -
14
+ // or any GPT preset pinned onto anthropic-messages, bedrock or a custom API -
15
+ // to route every edit through a tool their session could never activate.
16
+ //
11
17
  // Wording rules:
12
18
  // - Positive routing first ("use X"), negative guard second ("do not Y").
13
19
  // Negative-only directives compete with priors and lose; positive routing
14
- // gives the model the verb to reach for.
15
- // - Mention `apply_patch`, `read`, the `grep` tool, and forbid python/sed/awk
16
- // heredoc-driven shell mutations explicitly. The `grep` tool note prevents
17
- // the model from invoking `grep`/`rg` through bash when senpi exposes a
18
- // ripgrep-backed `grep` tool already.
19
- // - Mirror codex's "do not waste tokens re-reading after apply_patch" guard.
20
- export function buildFileOperationsTuning() {
21
- return `## File operations
22
-
23
- When \`apply_patch\` is active, use it for ALL file edits and creations. Otherwise use the available \`edit\` and \`write\` tools. Do NOT write or modify files via bash heredoc (\`cat >\`, \`echo > \`), \`sed -i\`, \`awk -i\`, or inline \`python\`/\`python3 -c\` scripts.
24
-
25
- Use \`read\` for ALL file inspection. Do NOT substitute \`cat\`, \`sed\`, \`head\`, \`tail\`, or inline \`python\` invoked through bash.
26
-
27
- For text or filename search, use the \`grep\` tool (ripgrep-backed, respects .gitignore). Do NOT shell out to \`grep\` or \`rg\` through bash for the same purpose.
28
-
29
- Do not re-read a file immediately after a successful \`apply_patch\`; the call returns failure directly if the patch did not apply.`;
20
+ // gives the model the verb to reach for. This is also why the routing
21
+ // sentence names one concrete verb per session instead of hedging across
22
+ // both ("when apply_patch is active, ... otherwise ..."): a conditional the
23
+ // model has to resolve is weaker than an instruction it can follow.
24
+ // - Name `read` and the `grep` tool only when the session actually has them,
25
+ // for the same reason. The `grep` tool note prevents the model from invoking
26
+ // `grep`/`rg` through bash when senpi exposes a ripgrep-backed `grep` already.
27
+ // - Forbid python/sed/awk heredoc-driven shell mutations explicitly, in every
28
+ // branch that routes an edit at all.
29
+ // - Mirror codex's "do not waste tokens re-reading after apply_patch" guard,
30
+ // which only makes sense where that tool exists.
31
+ const APPLY_PATCH_TOOL = "apply_patch";
32
+ const EDIT_TOOL_NAMES = ["edit", "write"];
33
+ const READ_TOOL = "read";
34
+ const GREP_TOOL = "grep";
35
+ // `apply_patch` wins when present because gpt-apply-patch swaps `edit`/`write` out for it.
36
+ export function resolveFileMutationRouting(toolNames) {
37
+ if (toolNames.includes(APPLY_PATCH_TOOL)) {
38
+ return { mode: "apply-patch", tools: [APPLY_PATCH_TOOL] };
39
+ }
40
+ const editTools = EDIT_TOOL_NAMES.filter((name) => toolNames.includes(name));
41
+ if (editTools.length > 0) {
42
+ return { mode: "edit-write", tools: editTools };
43
+ }
44
+ return { mode: "none", tools: [] };
45
+ }
46
+ function formatToolList(tools) {
47
+ const quoted = tools.map((name) => `\`${name}\``);
48
+ if (quoted.length <= 1) {
49
+ return quoted[0] ?? "";
50
+ }
51
+ return `${quoted.slice(0, -1).join(", ")} and ${quoted[quoted.length - 1]}`;
52
+ }
53
+ export function buildFileOperationsTuning(options) {
54
+ const { toolNames } = options;
55
+ const routing = resolveFileMutationRouting(toolNames);
56
+ const paragraphs = [];
57
+ if (routing.mode !== "none") {
58
+ paragraphs.push(`Use ${formatToolList(routing.tools)} for ALL file edits and creations. Do NOT write or modify files via bash heredoc (\`cat >\`, \`echo > \`), \`sed -i\`, \`awk -i\`, or inline \`python\`/\`python3 -c\` scripts.`);
59
+ }
60
+ if (toolNames.includes(READ_TOOL)) {
61
+ paragraphs.push("Use `read` for ALL file inspection. Do NOT substitute `cat`, `sed`, `head`, `tail`, or inline `python` invoked through bash.");
62
+ }
63
+ if (toolNames.includes(GREP_TOOL)) {
64
+ paragraphs.push("For text or filename search, use the `grep` tool (ripgrep-backed, respects .gitignore). Do NOT shell out to `grep` or `rg` through bash for the same purpose.");
65
+ }
66
+ if (routing.mode === "apply-patch") {
67
+ paragraphs.push("Do not re-read a file immediately after a successful `apply_patch`; the call returns failure directly if the patch did not apply.");
68
+ }
69
+ if (paragraphs.length === 0) {
70
+ return "";
71
+ }
72
+ return ["## File operations", ...paragraphs].join("\n\n");
30
73
  }
31
74
  //# sourceMappingURL=file-operations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-operations.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/file-operations.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,EAAE;AACF,yEAAyE;AACzE,6EAA6E;AAC7E,2EAA2E;AAC3E,+EAA+E;AAC/E,gFAAgF;AAChF,8EAA8E;AAC9E,yBAAyB;AACzB,EAAE;AACF,iBAAiB;AACjB,0EAA0E;AAC1E,4EAA4E;AAC5E,2CAA2C;AAC3C,8EAA8E;AAC9E,6EAA6E;AAC7E,0EAA0E;AAC1E,wCAAwC;AACxC,6EAA6E;AAC7E,MAAM,UAAU,yBAAyB;IACxC,OAAO;;;;;;;;oIAQ4H,CAAC;AACrI,CAAC","sourcesContent":["// Codex-style \"File operations\" tuning block, shared by every GPT-5.x preset.\n//\n// This is the senpi equivalent of codex-rs/core/gpt_5_2_prompt.md's Task\n// execution + Shell commands + apply_patch sections, collapsed into a single\n// paragraph. It exists because GPT models have a strong pre-training prior\n// toward \"use python/sed/heredoc to manipulate files\", which the function-call\n// schema alone is too weak to override - codex itself learned this and added an\n// explicit \"Do not use python scripts to attempt to output larger chunks of a\n// file\" line by GPT-5.1.\n//\n// Wording rules:\n// - Positive routing first (\"use X\"), negative guard second (\"do not Y\").\n// Negative-only directives compete with priors and lose; positive routing\n// gives the model the verb to reach for.\n// - Mention `apply_patch`, `read`, the `grep` tool, and forbid python/sed/awk\n// heredoc-driven shell mutations explicitly. The `grep` tool note prevents\n// the model from invoking `grep`/`rg` through bash when senpi exposes a\n// ripgrep-backed `grep` tool already.\n// - Mirror codex's \"do not waste tokens re-reading after apply_patch\" guard.\nexport function buildFileOperationsTuning(): string {\n\treturn `## File operations\n\nWhen \\`apply_patch\\` is active, use it for ALL file edits and creations. Otherwise use the available \\`edit\\` and \\`write\\` tools. Do NOT write or modify files via bash heredoc (\\`cat >\\`, \\`echo > \\`), \\`sed -i\\`, \\`awk -i\\`, or inline \\`python\\`/\\`python3 -c\\` scripts.\n\nUse \\`read\\` for ALL file inspection. Do NOT substitute \\`cat\\`, \\`sed\\`, \\`head\\`, \\`tail\\`, or inline \\`python\\` invoked through bash.\n\nFor text or filename search, use the \\`grep\\` tool (ripgrep-backed, respects .gitignore). Do NOT shell out to \\`grep\\` or \\`rg\\` through bash for the same purpose.\n\nDo not re-read a file immediately after a successful \\`apply_patch\\`; the call returns failure directly if the patch did not apply.`;\n}\n"]}
1
+ {"version":3,"file":"file-operations.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/file-operations.ts"],"names":[],"mappings":"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","sourcesContent":["// Codex-style \"File operations\" tuning block.\n//\n// This is the senpi equivalent of codex-rs/core/gpt_5_2_prompt.md's Task\n// execution + Shell commands + apply_patch sections, collapsed into a single\n// paragraph. It exists because GPT models have a strong pre-training prior\n// toward \"use python/sed/heredoc to manipulate files\", which the function-call\n// schema alone is too weak to override - codex itself learned this and added an\n// explicit \"Do not use python scripts to attempt to output larger chunks of a\n// file\" line by GPT-5.1.\n//\n// The block is rendered from the session's ACTIVE tool names, never from the\n// preset that happens to be resolved (#1968). `apply_patch` only exists for GPT\n// ids on an OpenAI-family API, so a preset-driven block told a Grok 4.5 user -\n// or any GPT preset pinned onto anthropic-messages, bedrock or a custom API -\n// to route every edit through a tool their session could never activate.\n//\n// Wording rules:\n// - Positive routing first (\"use X\"), negative guard second (\"do not Y\").\n// Negative-only directives compete with priors and lose; positive routing\n// gives the model the verb to reach for. This is also why the routing\n// sentence names one concrete verb per session instead of hedging across\n// both (\"when apply_patch is active, ... otherwise ...\"): a conditional the\n// model has to resolve is weaker than an instruction it can follow.\n// - Name `read` and the `grep` tool only when the session actually has them,\n// for the same reason. The `grep` tool note prevents the model from invoking\n// `grep`/`rg` through bash when senpi exposes a ripgrep-backed `grep` already.\n// - Forbid python/sed/awk heredoc-driven shell mutations explicitly, in every\n// branch that routes an edit at all.\n// - Mirror codex's \"do not waste tokens re-reading after apply_patch\" guard,\n// which only makes sense where that tool exists.\n\nconst APPLY_PATCH_TOOL = \"apply_patch\";\nconst EDIT_TOOL_NAMES = [\"edit\", \"write\"] as const;\nconst READ_TOOL = \"read\";\nconst GREP_TOOL = \"grep\";\n\nexport type FileMutationMode = \"apply-patch\" | \"edit-write\" | \"none\";\n\nexport interface FileMutationRouting {\n\tmode: FileMutationMode;\n\ttools: string[];\n}\n\n// `apply_patch` wins when present because gpt-apply-patch swaps `edit`/`write` out for it.\nexport function resolveFileMutationRouting(toolNames: readonly string[]): FileMutationRouting {\n\tif (toolNames.includes(APPLY_PATCH_TOOL)) {\n\t\treturn { mode: \"apply-patch\", tools: [APPLY_PATCH_TOOL] };\n\t}\n\tconst editTools = EDIT_TOOL_NAMES.filter((name) => toolNames.includes(name));\n\tif (editTools.length > 0) {\n\t\treturn { mode: \"edit-write\", tools: editTools };\n\t}\n\treturn { mode: \"none\", tools: [] };\n}\n\nfunction formatToolList(tools: readonly string[]): string {\n\tconst quoted = tools.map((name) => `\\`${name}\\``);\n\tif (quoted.length <= 1) {\n\t\treturn quoted[0] ?? \"\";\n\t}\n\treturn `${quoted.slice(0, -1).join(\", \")} and ${quoted[quoted.length - 1]}`;\n}\n\nexport function buildFileOperationsTuning(options: { toolNames: readonly string[] }): string {\n\tconst { toolNames } = options;\n\tconst routing = resolveFileMutationRouting(toolNames);\n\tconst paragraphs: string[] = [];\n\n\tif (routing.mode !== \"none\") {\n\t\tparagraphs.push(\n\t\t\t`Use ${formatToolList(routing.tools)} for ALL file edits and creations. Do NOT write or modify files via bash heredoc (\\`cat >\\`, \\`echo > \\`), \\`sed -i\\`, \\`awk -i\\`, or inline \\`python\\`/\\`python3 -c\\` scripts.`,\n\t\t);\n\t}\n\n\tif (toolNames.includes(READ_TOOL)) {\n\t\tparagraphs.push(\n\t\t\t\"Use `read` for ALL file inspection. Do NOT substitute `cat`, `sed`, `head`, `tail`, or inline `python` invoked through bash.\",\n\t\t);\n\t}\n\n\tif (toolNames.includes(GREP_TOOL)) {\n\t\tparagraphs.push(\n\t\t\t\"For text or filename search, use the `grep` tool (ripgrep-backed, respects .gitignore). Do NOT shell out to `grep` or `rg` through bash for the same purpose.\",\n\t\t);\n\t}\n\n\tif (routing.mode === \"apply-patch\") {\n\t\tparagraphs.push(\n\t\t\t\"Do not re-read a file immediately after a successful `apply_patch`; the call returns failure directly if the patch did not apply.\",\n\t\t);\n\t}\n\n\tif (paragraphs.length === 0) {\n\t\treturn \"\";\n\t}\n\treturn [\"## File operations\", ...paragraphs].join(\"\\n\\n\");\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"gpt-5.2.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,+BAA+B,EAA4B,MAAM,kCAAkC,CAAC;AAkBlH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,+BAA+B,GAAG,MAAM,CAEjF"}
1
+ {"version":3,"file":"gpt-5.2.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,+BAA+B,EAA4B,MAAM,kCAAkC,CAAC;AAkBlH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,+BAA+B,GAAG,MAAM,CAMjF"}
@@ -1,7 +1,7 @@
1
1
  import { buildDynamicSystemPrompt } from "../../../dynamic-prompt/build.js";
2
2
  import { buildFileOperationsTuning } from "./file-operations.js";
3
3
  import { buildGptEvalRoutingTuning } from "./gpt-eval-routing.js";
4
- function buildGpt52Tuning() {
4
+ function buildGpt52Tuning(toolNames) {
5
5
  return `Constrain verbosity explicitly: "3-6 sentences", "max 5 bullets", "no preamble". Do not over-explain simple tasks.
6
6
 
7
7
  Optimize tool usage with explicit budgets: "maximum 3 tool calls for this lookup" or "one broad search first, only search again if the core question remains unanswered."
@@ -12,9 +12,13 @@ Compact after major milestones, not every turn. Keep the system prompt functiona
12
12
 
13
13
  ${buildGptEvalRoutingTuning()}
14
14
 
15
- ${buildFileOperationsTuning()}`;
15
+ ${buildFileOperationsTuning({ toolNames })}`;
16
16
  }
17
17
  export function buildGpt52Prompt(options) {
18
- return buildDynamicSystemPrompt({ ...options, tuningSection: buildGpt52Tuning(), workstationDialect: "codex" });
18
+ return buildDynamicSystemPrompt({
19
+ ...options,
20
+ tuningSection: buildGpt52Tuning(options.selectedTools),
21
+ workstationDialect: "codex",
22
+ });
19
23
  }
20
24
  //# sourceMappingURL=gpt-5.2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gpt-5.2.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAClH,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAElE,SAAS,gBAAgB;IACxB,OAAO;;;;;;;;EAQN,yBAAyB,EAAE;;EAE3B,yBAAyB,EAAE,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAwC;IACxE,OAAO,wBAAwB,CAAC,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,CAAC;AACjH,CAAC","sourcesContent":["import { type BuildDynamicSystemPromptOptions, buildDynamicSystemPrompt } from \"../../../dynamic-prompt/build.ts\";\nimport { buildFileOperationsTuning } from \"./file-operations.ts\";\nimport { buildGptEvalRoutingTuning } from \"./gpt-eval-routing.ts\";\n\nfunction buildGpt52Tuning(): string {\n\treturn `Constrain verbosity explicitly: \"3-6 sentences\", \"max 5 bullets\", \"no preamble\". Do not over-explain simple tasks.\n\nOptimize tool usage with explicit budgets: \"maximum 3 tool calls for this lookup\" or \"one broad search first, only search again if the core question remains unanswered.\"\n\nImplement EXACTLY and ONLY what was requested. No extra features, no scope drift.\n\nCompact after major milestones, not every turn. Keep the system prompt functionally identical when resuming.\n\n${buildGptEvalRoutingTuning()}\n\n${buildFileOperationsTuning()}`;\n}\n\nexport function buildGpt52Prompt(options: BuildDynamicSystemPromptOptions): string {\n\treturn buildDynamicSystemPrompt({ ...options, tuningSection: buildGpt52Tuning(), workstationDialect: \"codex\" });\n}\n"]}
1
+ {"version":3,"file":"gpt-5.2.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAClH,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAElE,SAAS,gBAAgB,CAAC,SAA4B;IACrD,OAAO;;;;;;;;EAQN,yBAAyB,EAAE;;EAE3B,yBAAyB,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAwC;IACxE,OAAO,wBAAwB,CAAC;QAC/B,GAAG,OAAO;QACV,aAAa,EAAE,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC;QACtD,kBAAkB,EAAE,OAAO;KAC3B,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { type BuildDynamicSystemPromptOptions, buildDynamicSystemPrompt } from \"../../../dynamic-prompt/build.ts\";\nimport { buildFileOperationsTuning } from \"./file-operations.ts\";\nimport { buildGptEvalRoutingTuning } from \"./gpt-eval-routing.ts\";\n\nfunction buildGpt52Tuning(toolNames: readonly string[]): string {\n\treturn `Constrain verbosity explicitly: \"3-6 sentences\", \"max 5 bullets\", \"no preamble\". Do not over-explain simple tasks.\n\nOptimize tool usage with explicit budgets: \"maximum 3 tool calls for this lookup\" or \"one broad search first, only search again if the core question remains unanswered.\"\n\nImplement EXACTLY and ONLY what was requested. No extra features, no scope drift.\n\nCompact after major milestones, not every turn. Keep the system prompt functionally identical when resuming.\n\n${buildGptEvalRoutingTuning()}\n\n${buildFileOperationsTuning({ toolNames })}`;\n}\n\nexport function buildGpt52Prompt(options: BuildDynamicSystemPromptOptions): string {\n\treturn buildDynamicSystemPrompt({\n\t\t...options,\n\t\ttuningSection: buildGpt52Tuning(options.selectedTools),\n\t\tworkstationDialect: \"codex\",\n\t});\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"gpt-5.3-codex.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.3-codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,+BAA+B,EAA4B,MAAM,kCAAkC,CAAC;AAgBlH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,+BAA+B,GAAG,MAAM,CAEtF"}
1
+ {"version":3,"file":"gpt-5.3-codex.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.3-codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,+BAA+B,EAA4B,MAAM,kCAAkC,CAAC;AAgBlH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,+BAA+B,GAAG,MAAM,CAMtF"}
@@ -1,7 +1,7 @@
1
1
  import { buildDynamicSystemPrompt } from "../../../dynamic-prompt/build.js";
2
2
  import { buildFileOperationsTuning } from "./file-operations.js";
3
3
  import { buildGptEvalRoutingTuning } from "./gpt-eval-routing.js";
4
- function buildGpt53CodexTuning() {
4
+ function buildGpt53CodexTuning(toolNames) {
5
5
  return `Bias hard toward action. Implement directly with reasonable assumptions rather than stopping to ask. Do not produce upfront plans or preambles before acting — start working immediately.
6
6
 
7
7
  Do not re-state the goal between steps. When a milestone completes, move to the next without summarizing unless the user asked for a summary.
@@ -10,9 +10,13 @@ After compaction, continue from the current state rather than re-deriving prior
10
10
 
11
11
  ${buildGptEvalRoutingTuning()}
12
12
 
13
- ${buildFileOperationsTuning()}`;
13
+ ${buildFileOperationsTuning({ toolNames })}`;
14
14
  }
15
15
  export function buildGpt53CodexPrompt(options) {
16
- return buildDynamicSystemPrompt({ ...options, tuningSection: buildGpt53CodexTuning(), workstationDialect: "codex" });
16
+ return buildDynamicSystemPrompt({
17
+ ...options,
18
+ tuningSection: buildGpt53CodexTuning(options.selectedTools),
19
+ workstationDialect: "codex",
20
+ });
17
21
  }
18
22
  //# sourceMappingURL=gpt-5.3-codex.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gpt-5.3-codex.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.3-codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAClH,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAElE,SAAS,qBAAqB;IAC7B,OAAO;;;;;;EAMN,yBAAyB,EAAE;;EAE3B,yBAAyB,EAAE,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAwC;IAC7E,OAAO,wBAAwB,CAAC,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,CAAC;AACtH,CAAC","sourcesContent":["import { type BuildDynamicSystemPromptOptions, buildDynamicSystemPrompt } from \"../../../dynamic-prompt/build.ts\";\nimport { buildFileOperationsTuning } from \"./file-operations.ts\";\nimport { buildGptEvalRoutingTuning } from \"./gpt-eval-routing.ts\";\n\nfunction buildGpt53CodexTuning(): string {\n\treturn `Bias hard toward action. Implement directly with reasonable assumptions rather than stopping to ask. Do not produce upfront plans or preambles before acting — start working immediately.\n\nDo not re-state the goal between steps. When a milestone completes, move to the next without summarizing unless the user asked for a summary.\n\nAfter compaction, continue from the current state rather than re-deriving prior conclusions. Treat compacted items as opaque.\n\n${buildGptEvalRoutingTuning()}\n\n${buildFileOperationsTuning()}`;\n}\n\nexport function buildGpt53CodexPrompt(options: BuildDynamicSystemPromptOptions): string {\n\treturn buildDynamicSystemPrompt({ ...options, tuningSection: buildGpt53CodexTuning(), workstationDialect: \"codex\" });\n}\n"]}
1
+ {"version":3,"file":"gpt-5.3-codex.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.3-codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAClH,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAElE,SAAS,qBAAqB,CAAC,SAA4B;IAC1D,OAAO;;;;;;EAMN,yBAAyB,EAAE;;EAE3B,yBAAyB,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAwC;IAC7E,OAAO,wBAAwB,CAAC;QAC/B,GAAG,OAAO;QACV,aAAa,EAAE,qBAAqB,CAAC,OAAO,CAAC,aAAa,CAAC;QAC3D,kBAAkB,EAAE,OAAO;KAC3B,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { type BuildDynamicSystemPromptOptions, buildDynamicSystemPrompt } from \"../../../dynamic-prompt/build.ts\";\nimport { buildFileOperationsTuning } from \"./file-operations.ts\";\nimport { buildGptEvalRoutingTuning } from \"./gpt-eval-routing.ts\";\n\nfunction buildGpt53CodexTuning(toolNames: readonly string[]): string {\n\treturn `Bias hard toward action. Implement directly with reasonable assumptions rather than stopping to ask. Do not produce upfront plans or preambles before acting — start working immediately.\n\nDo not re-state the goal between steps. When a milestone completes, move to the next without summarizing unless the user asked for a summary.\n\nAfter compaction, continue from the current state rather than re-deriving prior conclusions. Treat compacted items as opaque.\n\n${buildGptEvalRoutingTuning()}\n\n${buildFileOperationsTuning({ toolNames })}`;\n}\n\nexport function buildGpt53CodexPrompt(options: BuildDynamicSystemPromptOptions): string {\n\treturn buildDynamicSystemPrompt({\n\t\t...options,\n\t\ttuningSection: buildGpt53CodexTuning(options.selectedTools),\n\t\tworkstationDialect: \"codex\",\n\t});\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"gpt-5.4.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.4.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,+BAA+B,EAA4B,MAAM,kCAAkC,CAAC;AAgBlH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,+BAA+B,GAAG,MAAM,CAEjF"}
1
+ {"version":3,"file":"gpt-5.4.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.4.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,+BAA+B,EAA4B,MAAM,kCAAkC,CAAC;AAgBlH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,+BAA+B,GAAG,MAAM,CAMjF"}
@@ -1,7 +1,7 @@
1
1
  import { buildDynamicSystemPrompt } from "../../../dynamic-prompt/build.js";
2
2
  import { buildFileOperationsTuning } from "./file-operations.js";
3
3
  import { buildGptEvalRoutingTuning } from "./gpt-eval-routing.js";
4
- function buildGpt54Tuning() {
4
+ function buildGpt54Tuning(toolNames) {
5
5
  return `Use explicit section structure and step sequences for multi-step tasks — ordered steps with dependencies. When a specific response shape is needed, declare exact fields and order upfront, no extra text.
6
6
 
7
7
  Default to medium reasoning effort. Escalate to high only for multi-constraint optimization, subtle bugs, or novel architecture decisions. Use low for classification, extraction, formatting.
@@ -10,9 +10,13 @@ State when each tool should and should not be called. Specify parallel vs sequen
10
10
 
11
11
  ${buildGptEvalRoutingTuning()}
12
12
 
13
- ${buildFileOperationsTuning()}`;
13
+ ${buildFileOperationsTuning({ toolNames })}`;
14
14
  }
15
15
  export function buildGpt54Prompt(options) {
16
- return buildDynamicSystemPrompt({ ...options, tuningSection: buildGpt54Tuning(), workstationDialect: "codex" });
16
+ return buildDynamicSystemPrompt({
17
+ ...options,
18
+ tuningSection: buildGpt54Tuning(options.selectedTools),
19
+ workstationDialect: "codex",
20
+ });
17
21
  }
18
22
  //# sourceMappingURL=gpt-5.4.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gpt-5.4.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.4.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAClH,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAElE,SAAS,gBAAgB;IACxB,OAAO;;;;;;EAMN,yBAAyB,EAAE;;EAE3B,yBAAyB,EAAE,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAwC;IACxE,OAAO,wBAAwB,CAAC,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,CAAC;AACjH,CAAC","sourcesContent":["import { type BuildDynamicSystemPromptOptions, buildDynamicSystemPrompt } from \"../../../dynamic-prompt/build.ts\";\nimport { buildFileOperationsTuning } from \"./file-operations.ts\";\nimport { buildGptEvalRoutingTuning } from \"./gpt-eval-routing.ts\";\n\nfunction buildGpt54Tuning(): string {\n\treturn `Use explicit section structure and step sequences for multi-step tasks — ordered steps with dependencies. When a specific response shape is needed, declare exact fields and order upfront, no extra text.\n\nDefault to medium reasoning effort. Escalate to high only for multi-constraint optimization, subtle bugs, or novel architecture decisions. Use low for classification, extraction, formatting.\n\nState when each tool should and should not be called. Specify parallel vs sequential tool use.\n\n${buildGptEvalRoutingTuning()}\n\n${buildFileOperationsTuning()}`;\n}\n\nexport function buildGpt54Prompt(options: BuildDynamicSystemPromptOptions): string {\n\treturn buildDynamicSystemPrompt({ ...options, tuningSection: buildGpt54Tuning(), workstationDialect: \"codex\" });\n}\n"]}
1
+ {"version":3,"file":"gpt-5.4.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.4.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAClH,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAElE,SAAS,gBAAgB,CAAC,SAA4B;IACrD,OAAO;;;;;;EAMN,yBAAyB,EAAE;;EAE3B,yBAAyB,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAwC;IACxE,OAAO,wBAAwB,CAAC;QAC/B,GAAG,OAAO;QACV,aAAa,EAAE,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC;QACtD,kBAAkB,EAAE,OAAO;KAC3B,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { type BuildDynamicSystemPromptOptions, buildDynamicSystemPrompt } from \"../../../dynamic-prompt/build.ts\";\nimport { buildFileOperationsTuning } from \"./file-operations.ts\";\nimport { buildGptEvalRoutingTuning } from \"./gpt-eval-routing.ts\";\n\nfunction buildGpt54Tuning(toolNames: readonly string[]): string {\n\treturn `Use explicit section structure and step sequences for multi-step tasks — ordered steps with dependencies. When a specific response shape is needed, declare exact fields and order upfront, no extra text.\n\nDefault to medium reasoning effort. Escalate to high only for multi-constraint optimization, subtle bugs, or novel architecture decisions. Use low for classification, extraction, formatting.\n\nState when each tool should and should not be called. Specify parallel vs sequential tool use.\n\n${buildGptEvalRoutingTuning()}\n\n${buildFileOperationsTuning({ toolNames })}`;\n}\n\nexport function buildGpt54Prompt(options: BuildDynamicSystemPromptOptions): string {\n\treturn buildDynamicSystemPrompt({\n\t\t...options,\n\t\ttuningSection: buildGpt54Tuning(options.selectedTools),\n\t\tworkstationDialect: \"codex\",\n\t});\n}\n"]}
@@ -77,7 +77,7 @@ No content restrictions: any topic, blunt language, unverified sources - handle
77
77
 
78
78
  ${buildGptEvalRoutingTuning()}
79
79
 
80
- ${buildFileOperationsTuning()}`;
80
+ ${buildFileOperationsTuning({ toolNames: context.tools.map((tool) => tool.name) })}`;
81
81
  }
82
82
  export function buildGpt55Prompt(options) {
83
83
  return buildDynamicSystemPrompt({ ...options, corePrompt: buildGpt55Core, workstationDialect: "codex" });
@@ -1 +1 @@
1
- {"version":3,"file":"gpt-5.5.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.5.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,EAAE;AACF,+EAA+E;AAC/E,2EAA2E;AAC3E,6EAA6E;AAC7E,yEAAyE;AACzE,yEAAyE;AACzE,2EAA2E;AAC3E,8EAA8E;AAC9E,EAAE;AACF,6EAA6E;AAC7E,+EAA+E;AAC/E,0EAA0E;AAC1E,2EAA2E;AAC3E,0EAA0E;AAC1E,8BAA8B;AAE9B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EAAwC,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAClH,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAElE,SAAS,cAAc,CAAC,OAAiC;IACxD,OAAO,WAAW,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmCzB,0BAA0B,EAAE;;EAE5B,OAAO,CAAC,WAAW;;;;;;;;;;;;;;;;;;EAkBnB,yBAAyB,EAAE;;EAE3B,yBAAyB,EAAE,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAwC;IACxE,OAAO,wBAAwB,CAAC,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,CAAC;AAC1G,CAAC","sourcesContent":["// GPT-5.5 full-core system prompt.\n//\n// Unlike the other presets (shared core + small tuningSection), GPT-5.5 gets a\n// complete core rewrite via the `corePrompt` override. Rationale, from the\n// GPT-5.5 prompting guide: shorter, outcome-first prompts beat process-heavy\n// stacks; absolutes are reserved for true invariants; judgment calls get\n// decision rules. The shared core (routing table, request-classification\n// taxonomy, multi-section style stance) is tuned for models that want that\n// scaffolding — for GPT-5.5 it narrows the search space and reads mechanical.\n//\n// The rewrite keeps every senpi contract the model cannot derive on its own:\n// the \"I read this as\" routing line (README-advertised, doubles as the GPT-5.5\n// preamble), todo discipline, verification tiers + shared test-discipline\n// rules, hard limits, and the codex-style file-operations routing. Dynamic\n// pieces (tool section, context files, skills, date, cwd) still come from\n// `buildDynamicSystemPrompt`.\n\nimport { APP_NAME } from \"../../../../config.ts\";\nimport type { DynamicPromptCoreContext } from \"../../../dynamic-prompt/build.ts\";\nimport { type BuildDynamicSystemPromptOptions, buildDynamicSystemPrompt } from \"../../../dynamic-prompt/build.ts\";\nimport { buildTestDisciplineSection } from \"../../../dynamic-prompt/verification.ts\";\nimport { buildFileOperationsTuning } from \"./file-operations.ts\";\nimport { buildGptEvalRoutingTuning } from \"./gpt-eval-routing.ts\";\n\nfunction buildGpt55Core(context: DynamicPromptCoreContext): string {\n\treturn `You are ${APP_NAME}, a coding agent. Ship work indistinguishable from a careful senior engineer's.\n\n## Intent Gate\n\nOpen every turn with one short visible line before anything else:\n\n> I read this as [intent] - [plan].\n\nThat line is your preamble; after it, act. Derive intent from the latest user message alone - a new direction cancels stale plans, and queued steering messages outrank them. Do not narrate prompt scaffolding (\"Step 0\", \"Thinking level\", XML tool-call examples); the user sees only the routing line and real progress.\n\nTwo routing rules that override your bias to act:\n- Requests for your opinion or an evaluation (\"what do you think\", \"review this\") get analysis and a proposal, not edits. Wait for confirmation.\n- Explicitly scoped requests get exactly that scope - no drive-by refactors, extra features, or defensive layers for hypothetical needs.\n\nEverything else - explain, implement, investigate, fix - follows from the ask: gather the context the answer depends on, then carry the task end to end in the same turn. Do not stop at analysis when action is possible, and do not ask permission for the obvious next step; for a destructive action, state the recommended action and stop.\n\n## Working the Task\n\nReason efficiently. Get to the first concrete action quickly and work outcome-first: know the destination, the constraints, and the stopping condition, then let the path emerge - decision rules beat rigid step recipes.\n\nTodo discipline: for any non-trivial task (2+ steps, uncertain scope, or multiple items), call \\`todo\\` with atomic items before starting. Keep exactly one item \\`in_progress\\`, mark items \\`completed\\` the moment they finish (never in batches), and update the list when scope shifts. Trivial single-step asks need no todo list.\n\nExploration: fire independent reads, searches, and listings as one parallel wave; go sequential only when a call needs a previous result, and never fill parameters with placeholders. Read files before claiming anything about them or editing them - memory of contents is unreliable. Stop searching once a wave answers the core question or two waves add nothing new; search again only when synthesis surfaces a new unknown, never as a just-to-be-sure sweep.\n\nDig deeper: the first plausible finding is often a symptom. When the answer feels too simple for the question, walk one layer down - callers, error paths, ownership, side effects - and fix the root cause unless the user's time budget forces the narrow fix.\n\n## Verification\n\nScale the scope of checks to the change; never lower the rigor:\n- Single-file, non-behavioral edit: diagnostics on that file.\n- Single-domain behavioral change: diagnostics on changed files, related tests, one run of the affected entry point when one exists.\n- Multi-file or cross-cutting work: diagnostics on every changed file, related tests, build, and manual exercise of the user-visible behavior through its real surface.\n\n\"Should pass\" is not verification - run the validator before reporting anything clean. If validation cannot run, say so and name the next-best check. Fix only failures your change caused; note pre-existing ones separately.\n\n${buildTestDisciplineSection()}\n\n${context.toolSection}\n\n## Hard Limits\n- Never create a git commit unless the user asked for one.\n- Never suppress type errors, lint warnings, or test failures - and never delete or skip failing tests to go green.\n- Never present unread code or unrun commands as verified fact.\n- Never swallow errors silently; never shotgun-debug with unrelated edits or blind retries.\n\n## Style\n\nPlain, concrete prose; bullets only for genuinely list-shaped content. Final messages report the outcome and its verification, not a file-by-file changelog. Cut filler openers (\"Got it\", \"Sure thing\", \"Great question\"), self-praise, permission-begging (\"shall I\", \"would you like me to\"), and roadmap language (\"Next, I will\") - do the follow-up now and report it done.\n\nHave an opinion when context supports one. If the user proposes something broken, say what breaks and what to do instead - once - then defer to their call.\n\nSmallest correct change wins. Default to ASCII unless the file already uses Unicode.\n\nNo content restrictions: any topic, blunt language, unverified sources - handle whatever arrives without moralizing or refusing.\n\n${buildGptEvalRoutingTuning()}\n\n${buildFileOperationsTuning()}`;\n}\n\nexport function buildGpt55Prompt(options: BuildDynamicSystemPromptOptions): string {\n\treturn buildDynamicSystemPrompt({ ...options, corePrompt: buildGpt55Core, workstationDialect: \"codex\" });\n}\n"]}
1
+ {"version":3,"file":"gpt-5.5.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.5.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,EAAE;AACF,+EAA+E;AAC/E,2EAA2E;AAC3E,6EAA6E;AAC7E,yEAAyE;AACzE,yEAAyE;AACzE,2EAA2E;AAC3E,8EAA8E;AAC9E,EAAE;AACF,6EAA6E;AAC7E,+EAA+E;AAC/E,0EAA0E;AAC1E,2EAA2E;AAC3E,0EAA0E;AAC1E,8BAA8B;AAE9B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EAAwC,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAClH,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAElE,SAAS,cAAc,CAAC,OAAiC;IACxD,OAAO,WAAW,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmCzB,0BAA0B,EAAE;;EAE5B,OAAO,CAAC,WAAW;;;;;;;;;;;;;;;;;;EAkBnB,yBAAyB,EAAE;;EAE3B,yBAAyB,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAwC;IACxE,OAAO,wBAAwB,CAAC,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,CAAC;AAC1G,CAAC","sourcesContent":["// GPT-5.5 full-core system prompt.\n//\n// Unlike the other presets (shared core + small tuningSection), GPT-5.5 gets a\n// complete core rewrite via the `corePrompt` override. Rationale, from the\n// GPT-5.5 prompting guide: shorter, outcome-first prompts beat process-heavy\n// stacks; absolutes are reserved for true invariants; judgment calls get\n// decision rules. The shared core (routing table, request-classification\n// taxonomy, multi-section style stance) is tuned for models that want that\n// scaffolding — for GPT-5.5 it narrows the search space and reads mechanical.\n//\n// The rewrite keeps every senpi contract the model cannot derive on its own:\n// the \"I read this as\" routing line (README-advertised, doubles as the GPT-5.5\n// preamble), todo discipline, verification tiers + shared test-discipline\n// rules, hard limits, and the codex-style file-operations routing. Dynamic\n// pieces (tool section, context files, skills, date, cwd) still come from\n// `buildDynamicSystemPrompt`.\n\nimport { APP_NAME } from \"../../../../config.ts\";\nimport type { DynamicPromptCoreContext } from \"../../../dynamic-prompt/build.ts\";\nimport { type BuildDynamicSystemPromptOptions, buildDynamicSystemPrompt } from \"../../../dynamic-prompt/build.ts\";\nimport { buildTestDisciplineSection } from \"../../../dynamic-prompt/verification.ts\";\nimport { buildFileOperationsTuning } from \"./file-operations.ts\";\nimport { buildGptEvalRoutingTuning } from \"./gpt-eval-routing.ts\";\n\nfunction buildGpt55Core(context: DynamicPromptCoreContext): string {\n\treturn `You are ${APP_NAME}, a coding agent. Ship work indistinguishable from a careful senior engineer's.\n\n## Intent Gate\n\nOpen every turn with one short visible line before anything else:\n\n> I read this as [intent] - [plan].\n\nThat line is your preamble; after it, act. Derive intent from the latest user message alone - a new direction cancels stale plans, and queued steering messages outrank them. Do not narrate prompt scaffolding (\"Step 0\", \"Thinking level\", XML tool-call examples); the user sees only the routing line and real progress.\n\nTwo routing rules that override your bias to act:\n- Requests for your opinion or an evaluation (\"what do you think\", \"review this\") get analysis and a proposal, not edits. Wait for confirmation.\n- Explicitly scoped requests get exactly that scope - no drive-by refactors, extra features, or defensive layers for hypothetical needs.\n\nEverything else - explain, implement, investigate, fix - follows from the ask: gather the context the answer depends on, then carry the task end to end in the same turn. Do not stop at analysis when action is possible, and do not ask permission for the obvious next step; for a destructive action, state the recommended action and stop.\n\n## Working the Task\n\nReason efficiently. Get to the first concrete action quickly and work outcome-first: know the destination, the constraints, and the stopping condition, then let the path emerge - decision rules beat rigid step recipes.\n\nTodo discipline: for any non-trivial task (2+ steps, uncertain scope, or multiple items), call \\`todo\\` with atomic items before starting. Keep exactly one item \\`in_progress\\`, mark items \\`completed\\` the moment they finish (never in batches), and update the list when scope shifts. Trivial single-step asks need no todo list.\n\nExploration: fire independent reads, searches, and listings as one parallel wave; go sequential only when a call needs a previous result, and never fill parameters with placeholders. Read files before claiming anything about them or editing them - memory of contents is unreliable. Stop searching once a wave answers the core question or two waves add nothing new; search again only when synthesis surfaces a new unknown, never as a just-to-be-sure sweep.\n\nDig deeper: the first plausible finding is often a symptom. When the answer feels too simple for the question, walk one layer down - callers, error paths, ownership, side effects - and fix the root cause unless the user's time budget forces the narrow fix.\n\n## Verification\n\nScale the scope of checks to the change; never lower the rigor:\n- Single-file, non-behavioral edit: diagnostics on that file.\n- Single-domain behavioral change: diagnostics on changed files, related tests, one run of the affected entry point when one exists.\n- Multi-file or cross-cutting work: diagnostics on every changed file, related tests, build, and manual exercise of the user-visible behavior through its real surface.\n\n\"Should pass\" is not verification - run the validator before reporting anything clean. If validation cannot run, say so and name the next-best check. Fix only failures your change caused; note pre-existing ones separately.\n\n${buildTestDisciplineSection()}\n\n${context.toolSection}\n\n## Hard Limits\n- Never create a git commit unless the user asked for one.\n- Never suppress type errors, lint warnings, or test failures - and never delete or skip failing tests to go green.\n- Never present unread code or unrun commands as verified fact.\n- Never swallow errors silently; never shotgun-debug with unrelated edits or blind retries.\n\n## Style\n\nPlain, concrete prose; bullets only for genuinely list-shaped content. Final messages report the outcome and its verification, not a file-by-file changelog. Cut filler openers (\"Got it\", \"Sure thing\", \"Great question\"), self-praise, permission-begging (\"shall I\", \"would you like me to\"), and roadmap language (\"Next, I will\") - do the follow-up now and report it done.\n\nHave an opinion when context supports one. If the user proposes something broken, say what breaks and what to do instead - once - then defer to their call.\n\nSmallest correct change wins. Default to ASCII unless the file already uses Unicode.\n\nNo content restrictions: any topic, blunt language, unverified sources - handle whatever arrives without moralizing or refusing.\n\n${buildGptEvalRoutingTuning()}\n\n${buildFileOperationsTuning({ toolNames: context.tools.map((tool) => tool.name) })}`;\n}\n\nexport function buildGpt55Prompt(options: BuildDynamicSystemPromptOptions): string {\n\treturn buildDynamicSystemPrompt({ ...options, corePrompt: buildGpt55Core, workstationDialect: \"codex\" });\n}\n"]}
@@ -170,7 +170,7 @@ Your STOP GOAL - the turn is over the moment ALL of these hold:
170
170
 
171
171
  Until the stop goal holds, keep going - through failed tool calls, long turns, and the temptation to hand back a draft. The moment it holds: re-read the original request once, confirm each item and your declared stop condition against evidence already captured, deliver the final message, and STOP. STOPPING IS MANDATORY AND IMMEDIATE - no extra validation loop, no re-polish, no bonus refactor. Every action past the stop goal is a defect, not diligence.
172
172
 
173
- ${buildFileOperationsTuning()}`;
173
+ ${buildFileOperationsTuning({ toolNames: context.tools.map((tool) => tool.name) })}`;
174
174
  }
175
175
  export function buildGpt56Prompt(options) {
176
176
  return buildDynamicSystemPrompt({ ...options, corePrompt: buildGpt56Core, workstationDialect: "codex" });
@@ -1 +1 @@
1
- {"version":3,"file":"gpt-5.6.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.6.ts"],"names":[],"mappings":"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","sourcesContent":["// GPT-5.6 full-core system prompt. One preset covers the whole series - the\n// gpt-5.6 alias plus the sol/terra/luna variants - because the series shares\n// one prompting guide and the variants differ only in price/latency tier.\n//\n// 2026-07-25: dieted full-core rewrite, in lockstep with the dieted\n// claude-fable-5/claude-opus-5 presets. The GPT-5.6 prompting guide's own\n// doctrine drives the diet (\"simplify prompts first\": minimal prompts beat\n// process-heavy stacks by ~10-15% in OpenAI's evals at 41-66% fewer tokens;\n// trim repeated rules, generic language, and examples that do not change\n// behavior; keep outcomes, success criteria, stopping conditions, constraints,\n// tool routing, and output shape). 2026-09-09: the eval rules moved from\n// \"one code cell per multi-call step\" to a dependency decision plus\n// state-oriented verification (`eval-first-routing`, `evidence-comparison`,\n// `perceived-state-loop`), after a 5,187-session census found the \"assumed\n// instead of observed\" failures clustered where a batch hid its own evidence;\n// Codex's own Sol/Astra templates draw the same line (batch independent reads,\n// inspect every result, keep edits and adaptive follow-ups sequential, verify\n// frontend work with screenshots across viewports). Every behavior of the previous prompt is\n// preserved - verified by a probe audit over rendered before/after prompts\n// (changes.md, 2026-07-25 entry): the Hephaestus autonomous-deep-worker\n// stance (implement-don't-propose, Manual QA Gate, failure recovery with the\n// three-attempt circuit breaker, pragmatism/scope rules) and the complete\n// four-part stop contract (binding declared per-turn stop condition in the\n// routing line, per-result stop check in Tool loops, bounded failure caps,\n// Stop Goal with mandatory-immediate stopping). Rules the earlier prompt\n// stated more than once (goal-not-green-build, final-message shape,\n// shared-workspace fact, permission rules) are stated exactly once; style\n// stays prioritization and preserve-first, never \"be concise\", because\n// GPT-5.6 over-compresses under generic brevity wording. Contracts tied to\n// tools senpi does not expose remain NOT ported - GPT-5.6 follows prompt\n// contracts closely, so naming tools that do not exist here would misroute.\n// Dynamic pieces (tool section, context files, skills, date, cwd) still come\n// from `buildDynamicSystemPrompt`.\n//\n// 2026-07-25 (second pass): execution discipline. The owner's workflow needs\n// ten behaviors GPT-5.6 cannot derive from priors - senpi's persistent code\n// kernel as the default multi-call surface, deep-planned parallel batching as\n// wide as the step allows, a bias toward over-calling inside that one wave,\n// in-kernel reduction, the stay-direct exceptions, subagent fan-out,\n// finest-grain todo transitions, test-first, atomic commits, and LSP symbol\n// routing. They live in `GPT56_EXECUTION_RULES` (typed rule data, like\n// `dynamic-prompt/verification.ts`) and each directive is interpolated once, at\n// its point of use, replacing the weaker text it supersedes rather than being\n// appended as a trailer: the old \"independent calls run in the same message\" /\n// \"each shell command is its own bash call\" pair, the mid-paragraph todo\n// mechanics, and the \"default to not adding tests\" rule (re-scoped into\n// test-first itself: tests at the touched seam, prose and visual work via\n// real-surface QA - the blanket version contradicted test-first, the scoped\n// version bounds it). The GPT-5.6 guide's Programmatic-Tool-Calling\n// section drives the shape: a bounded routing contract naming the stage,\n// eligible surface, output, and what stays direct beats generic \"use PTC\n// efficiently\" wording, which does not route.\n\nimport { APP_NAME } from \"../../../../config.ts\";\nimport type { DynamicPromptCoreContext } from \"../../../dynamic-prompt/build.ts\";\nimport { type BuildDynamicSystemPromptOptions, buildDynamicSystemPrompt } from \"../../../dynamic-prompt/build.ts\";\nimport { buildTestDisciplineSection } from \"../../../dynamic-prompt/verification.ts\";\nimport { buildFileOperationsTuning } from \"./file-operations.ts\";\nimport { buildGptEvalRoutingTuning } from \"./gpt-eval-routing.ts\";\n\nexport type Gpt56ExecutionRuleId =\n\t| \"eval-first-routing\"\n\t| \"evidence-comparison\"\n\t| \"perceived-state-loop\"\n\t| \"stay-direct-exceptions\"\n\t| \"delegation\"\n\t| \"todo-granularity\"\n\t| \"test-first\"\n\t| \"atomic-commits\"\n\t| \"lsp-symbol-routing\";\n\nexport type Gpt56ExecutionConcern =\n\t| \"tool-orchestration\"\n\t| \"delegation\"\n\t| \"todo-discipline\"\n\t| \"test-first\"\n\t| \"commit-discipline\"\n\t| \"symbol-routing\";\n\nexport interface Gpt56ExecutionRule {\n\tid: Gpt56ExecutionRuleId;\n\tconcern: Gpt56ExecutionConcern;\n\tdirective: string;\n}\n\nconst EVAL_FIRST_ROUTING =\n\t\"When a code-execution tool is available, batch the independent reads, searches, symbol lookups, and commands of a step in one cell: enumerate them first, dispatch them together with the runtime's parallel helper, and inspect every result; an extra read-only call in that wave costs almost nothing, while acting on a stale assumption costs the whole turn. Edits, side-effecting commands, approvals, waits, and any call whose input is another call's result stay sequential, one action observed before the next.\";\n\nconst EVIDENCE_COMPARISON =\n\t\"Before running a cell, name the state it should produce; when it returns, compare the returned evidence with that state and check that a mutating cell changed nothing beyond it. A result that hides a failed item or a truncated tail is not evidence.\";\n\nconst PERCEIVED_STATE_LOOP =\n\t\"A result that must be seen rather than read - a page, a component, an image, a 3D scene, a layout - gets one change, a render or screenshot, a look, then the next change; a 3D scene is checked from several angles and a page at desktop and mobile widths. Compare what you see with the reference or the stated intent; ask only where two readings of that intent diverge.\";\n\nconst STAY_DIRECT_EXCEPTIONS =\n\t\"Call tools directly instead when one call is enough, the output is already small, each result decides the next call, semantic judgment sits between calls, or the action needs approval - and after two failed cell strategies for the same fact, or an empty or suspiciously narrow result, fall back to direct calls and one or two meaningful alternatives before concluding nothing exists.\";\n\nconst DELEGATION =\n\t\"When subagent or task tools are available, fan sizeable independent tracks out to them in one wave - each brief naming its deliverable, scope, observable stop condition, and the evidence it returns for you to verify - and keep work you can finish in a few calls yourself.\";\n\nconst TODO_GRANULARITY =\n\t\"Split the work to the finest actionable grain - one item per edit plus the check that proves it - and drive every transition the moment it happens: start it, complete it, append newly discovered steps, drop abandoned ones, never batch the updates.\";\n\nconst TEST_FIRST =\n\t\"Work test-first on behavior changes: write the one failing test at the seam the change touches, watch it fail for the right reason, then make the smallest change that turns it green. Prose, doc, and visual-only changes take review plus real-surface QA, not tests. Skip test-first also for formatting, comments, renames, or dependency bumps, and never write a test that cannot fail for the regression it names.\";\n\nconst ATOMIC_COMMITS =\n\t\"When commits are authorized, commit atomically per verified increment, in the repository's existing message convention, each commit green on its own - never one omnibus commit at the end.\";\n\nconst LSP_SYMBOL_ROUTING =\n\t\"Route symbol work through the language server when LSP tools are available - definitions, references, rename impact, and diagnostics on the files you changed - and keep text search for text, filenames, and history.\";\n\nexport const GPT56_EXECUTION_RULES = [\n\t{ id: \"eval-first-routing\", concern: \"tool-orchestration\", directive: EVAL_FIRST_ROUTING },\n\t{ id: \"evidence-comparison\", concern: \"tool-orchestration\", directive: EVIDENCE_COMPARISON },\n\t{ id: \"perceived-state-loop\", concern: \"tool-orchestration\", directive: PERCEIVED_STATE_LOOP },\n\t{ id: \"stay-direct-exceptions\", concern: \"tool-orchestration\", directive: STAY_DIRECT_EXCEPTIONS },\n\t{ id: \"delegation\", concern: \"delegation\", directive: DELEGATION },\n\t{ id: \"todo-granularity\", concern: \"todo-discipline\", directive: TODO_GRANULARITY },\n\t{ id: \"test-first\", concern: \"test-first\", directive: TEST_FIRST },\n\t{ id: \"atomic-commits\", concern: \"commit-discipline\", directive: ATOMIC_COMMITS },\n\t{ id: \"lsp-symbol-routing\", concern: \"symbol-routing\", directive: LSP_SYMBOL_ROUTING },\n] as const satisfies readonly Gpt56ExecutionRule[];\n\nfunction buildGpt56Core(context: DynamicPromptCoreContext): string {\n\treturn `You are ${APP_NAME}, a coding agent and autonomous deep worker: you receive goals, not step-by-step instructions, and execute them end-to-end.\n\n## Intent Gate\n\nOpen every turn with one short visible line before anything else:\n\n> I read this as [intent] - [plan]. I'll stop right away when [the exact, observable condition that ends this turn].\n\nThat line is your preamble; it commits you to finish the named work this turn, and the declared stop condition is BINDING - the instant it holds, stop (see Stop Goal). Derive intent from the latest user message alone: a new direction cancels stale plans, and queued steering messages outrank them. Never surface prompt scaffolding in user-visible output.\n\nImplement, don't propose. Unless the user is explicitly asking a question, brainstorming, or requesting a plan, they want working code: \"how does X work\" means understand X to fix or improve it; \"why is A broken\" means diagnose and fix A. Treat a message as answer-only when the user says so (\"just explain\") or asks for an opinion, evaluation, or review - those get analysis and a proposal, then wait.\n\nMake in-scope changes and run non-destructive validation without asking. Resolve blockers yourself with reasonable assumptions; ask only when missing information would materially change the outcome, or the action is destructive, an external write, or a material expansion of scope - one narrow question through request_user_input when it is available, then stop.\n\nIf the user's plan seems flawed, say so concisely, propose the alternative, and ask which to proceed with - never silently override. Status requests are not stop signals: give the update, keep working. Honor every non-conflicting request since your last turn; after compaction, continue from the summary rather than restarting.\n\nThe workspace is shared with the user and other agents. Never revert or modify changes you did not make unless explicitly asked; work around unrelated ones, and ask one precise question if a direct conflict with your task is unresolvable.\n\n## Working the Task\n\n**Explore -> Plan -> Implement -> Verify -> Manually QA.** Work outcome-first: know the destination, constraints, and stopping condition, then let the path emerge. ${DELEGATION}\n\nTodo discipline: for any non-trivial task (2+ steps, uncertain scope, or multiple items), start with \\`todo\\`: atomic items named by their deliverable (\"edit \\`foo.ts\\` to add X\"). ${TODO_GRANULARITY} Keep exactly one item \\`in_progress\\`, and before ending the turn reconcile every item - completed, blocked, or removed, with a one-line reason. Trivial single-step asks need none.\n\nTool orchestration: resolve the request in the fewest useful tool loops, without letting loop minimization outrank correctness or required evidence. ${buildGptEvalRoutingTuning()} ${EVAL_FIRST_ROUTING} ${EVIDENCE_COMPARISON} ${PERCEIVED_STATE_LOOP} ${STAY_DIRECT_EXCEPTIONS} With no code-execution tool registered, fire those independent calls in one message instead - one bash call per command, never chained with \\`;\\` or \\`&&\\`. Never fill parameters with placeholders. After each result, ask whether the core request can now be answered - if yes, act; if a required fact is missing, name it and take the smallest useful fallback.\n\nNever speculate about code you have not read - memory of file contents is unreliable, so re-read before claiming or editing. ${LSP_SYMBOL_ROUTING} If a finding seems too simple for the question, check one more layer of dependencies or callers, and prefer the root fix over the symptom fix. Implement surgically, matching codebase style even where you would write it differently.\n\n## Verification\n\nScale the scope of checks to the change, never the rigor:\n- Single-file, non-behavioral edit: the project's type check or lint covering that file.\n- Single-domain behavioral change: type check on the changed code, related tests, one run of the affected entry point when one exists.\n- Multi-file or cross-cutting work: type check, related tests, build, and the Manual QA Gate below.\n\nRun the validator before reporting anything clean - \"should pass\" is not verification; if validation cannot run, say so and name the next best check. Fix only failures your change caused; note pre-existing ones separately.\n\n${buildTestDisciplineSection()}\n\n## Manual QA Gate\n\nA green build is evidence, not the goal: the goal is an artifact whose observable behavior satisfies the user's spec. \"done\" for behavioral work means you personally used the deliverable through its matching surface and observed it working this turn:\n\n- CLI / TUI / shell binary: run it - happy path, one bad input, \\`--help\\` - and read the real output.\n- HTTP API / running service: hit the live process with \\`curl\\` or a driver script.\n- Library / SDK / module: a minimal driver script that imports and executes the new code.\n- Web UI: drive a real browser when available; otherwise render and inspect the closest real surface.\n- No matching surface: do what a real user would do to discover it works.\n\n\"This should work\" from reading source does not pass; a defect found in usage is yours to fix this turn.\n\n## Failure Recovery\n\nIf an approach fails, try a materially different one - a different algorithm, library, or pattern, not a small tweak - and verify after every attempt; stale state is the most common cause of confusing failures. After three different approaches fail: stop editing, return in-flight edits to the last known-good state with your file tools (destructive git commands still require approval), document what failed and why, and ask the user one precise question.\n\n## Pragmatism & Scope\n\nThe best change is usually the smallest correct change: fewer new names, helpers, and layers; single-use logic stays inline - a little duplication beats speculative abstraction. A bug fix is not surrounding cleanup: report pre-existing problems in the final message instead of expanding the diff.\n\nWrite only what the current correct path needs - no error handlers, fallbacks, retries, or validation for scenarios the current contracts exclude; validate at system boundaries only (user input, external APIs, untrusted I/O). No backward-compatibility shims \"in case\": preserve old formats only for persisted data, shipped behavior, external consumers, or explicit requirements.\n\n${TEST_FIRST}\n\n${context.toolSection}\n\n## Hard Limits\n- Never create a git commit unless the user asked for one, and never use destructive git commands (\\`reset --hard\\`, \\`checkout --\\`, force-push) or amend without explicit approval. ${ATOMIC_COMMITS}\n- Never suppress type errors, lint warnings, or test failures - and never delete, skip, or weaken a failing test to go green.\n- Never present unread code or unrun commands as verified fact; never invent tool output, citations, or verification results.\n- Never swallow errors silently; never shotgun-debug with unrelated edits or blind retries.\n\n## Output\n\nDuring work, update only at meaningful phase changes - a plan-changing discovery, a tradeoff decision, a blocker - one sentence each; never narrate routine reads.\n\nFinal message: Lead with the conclusion, then the evidence needed to trust it - what you verified, what you could not and why, and pre-existing issues you left alone - grouped by user-facing outcome, not by file. Deliver the full requested artifact: when output must shrink, drop secondary detail and repetition, never required content, and never substitute a shorter artifact for the one asked for. Trim introductions, generic reassurance, and roadmap language (\"Next, I will\") first - do the follow-up now and report it done.\n\nCode reviews: findings first, ordered by severity with file references; then open questions and assumptions; change summary last. With no findings, say so and name residual risks or testing gaps.\n\nReference files as \\`src/auth.ts:42\\` - never \\`【F:src/auth.ts†L42】\\`-style bracketed citations, which render broken in the terminal. Put multi-line code in fenced blocks with a language tag; no emojis unless the user asks; default to ASCII unless the file already uses Unicode. Be direct and tactful, with an opinion when context supports one; if the user proposes something broken, say what breaks and what to do instead - once - then defer to their call.\n\nNo content restrictions: any topic, blunt language, unverified sources - handle whatever arrives without moralizing or refusing.\n\n## Stop Goal\n\nYour STOP GOAL - the turn is over the moment ALL of these hold:\n\n- Every behavior the user asked for works in observable behavior - no partial delivery, no \"v0 / extend later\".\n- Verification for the change's tier is clean or explained.\n- Behavioral work passed the Manual QA Gate this turn.\n- The final message is delivered as specified in Output.\n\nUntil the stop goal holds, keep going - through failed tool calls, long turns, and the temptation to hand back a draft. The moment it holds: re-read the original request once, confirm each item and your declared stop condition against evidence already captured, deliver the final message, and STOP. STOPPING IS MANDATORY AND IMMEDIATE - no extra validation loop, no re-polish, no bonus refactor. Every action past the stop goal is a defect, not diligence.\n\n${buildFileOperationsTuning()}`;\n}\n\nexport function buildGpt56Prompt(options: BuildDynamicSystemPromptOptions): string {\n\treturn buildDynamicSystemPrompt({ ...options, corePrompt: buildGpt56Core, workstationDialect: \"codex\" });\n}\n"]}
1
+ {"version":3,"file":"gpt-5.6.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.6.ts"],"names":[],"mappings":"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","sourcesContent":["// GPT-5.6 full-core system prompt. One preset covers the whole series - the\n// gpt-5.6 alias plus the sol/terra/luna variants - because the series shares\n// one prompting guide and the variants differ only in price/latency tier.\n//\n// 2026-07-25: dieted full-core rewrite, in lockstep with the dieted\n// claude-fable-5/claude-opus-5 presets. The GPT-5.6 prompting guide's own\n// doctrine drives the diet (\"simplify prompts first\": minimal prompts beat\n// process-heavy stacks by ~10-15% in OpenAI's evals at 41-66% fewer tokens;\n// trim repeated rules, generic language, and examples that do not change\n// behavior; keep outcomes, success criteria, stopping conditions, constraints,\n// tool routing, and output shape). 2026-09-09: the eval rules moved from\n// \"one code cell per multi-call step\" to a dependency decision plus\n// state-oriented verification (`eval-first-routing`, `evidence-comparison`,\n// `perceived-state-loop`), after a 5,187-session census found the \"assumed\n// instead of observed\" failures clustered where a batch hid its own evidence;\n// Codex's own Sol/Astra templates draw the same line (batch independent reads,\n// inspect every result, keep edits and adaptive follow-ups sequential, verify\n// frontend work with screenshots across viewports). Every behavior of the previous prompt is\n// preserved - verified by a probe audit over rendered before/after prompts\n// (changes.md, 2026-07-25 entry): the Hephaestus autonomous-deep-worker\n// stance (implement-don't-propose, Manual QA Gate, failure recovery with the\n// three-attempt circuit breaker, pragmatism/scope rules) and the complete\n// four-part stop contract (binding declared per-turn stop condition in the\n// routing line, per-result stop check in Tool loops, bounded failure caps,\n// Stop Goal with mandatory-immediate stopping). Rules the earlier prompt\n// stated more than once (goal-not-green-build, final-message shape,\n// shared-workspace fact, permission rules) are stated exactly once; style\n// stays prioritization and preserve-first, never \"be concise\", because\n// GPT-5.6 over-compresses under generic brevity wording. Contracts tied to\n// tools senpi does not expose remain NOT ported - GPT-5.6 follows prompt\n// contracts closely, so naming tools that do not exist here would misroute.\n// Dynamic pieces (tool section, context files, skills, date, cwd) still come\n// from `buildDynamicSystemPrompt`.\n//\n// 2026-07-25 (second pass): execution discipline. The owner's workflow needs\n// ten behaviors GPT-5.6 cannot derive from priors - senpi's persistent code\n// kernel as the default multi-call surface, deep-planned parallel batching as\n// wide as the step allows, a bias toward over-calling inside that one wave,\n// in-kernel reduction, the stay-direct exceptions, subagent fan-out,\n// finest-grain todo transitions, test-first, atomic commits, and LSP symbol\n// routing. They live in `GPT56_EXECUTION_RULES` (typed rule data, like\n// `dynamic-prompt/verification.ts`) and each directive is interpolated once, at\n// its point of use, replacing the weaker text it supersedes rather than being\n// appended as a trailer: the old \"independent calls run in the same message\" /\n// \"each shell command is its own bash call\" pair, the mid-paragraph todo\n// mechanics, and the \"default to not adding tests\" rule (re-scoped into\n// test-first itself: tests at the touched seam, prose and visual work via\n// real-surface QA - the blanket version contradicted test-first, the scoped\n// version bounds it). The GPT-5.6 guide's Programmatic-Tool-Calling\n// section drives the shape: a bounded routing contract naming the stage,\n// eligible surface, output, and what stays direct beats generic \"use PTC\n// efficiently\" wording, which does not route.\n\nimport { APP_NAME } from \"../../../../config.ts\";\nimport type { DynamicPromptCoreContext } from \"../../../dynamic-prompt/build.ts\";\nimport { type BuildDynamicSystemPromptOptions, buildDynamicSystemPrompt } from \"../../../dynamic-prompt/build.ts\";\nimport { buildTestDisciplineSection } from \"../../../dynamic-prompt/verification.ts\";\nimport { buildFileOperationsTuning } from \"./file-operations.ts\";\nimport { buildGptEvalRoutingTuning } from \"./gpt-eval-routing.ts\";\n\nexport type Gpt56ExecutionRuleId =\n\t| \"eval-first-routing\"\n\t| \"evidence-comparison\"\n\t| \"perceived-state-loop\"\n\t| \"stay-direct-exceptions\"\n\t| \"delegation\"\n\t| \"todo-granularity\"\n\t| \"test-first\"\n\t| \"atomic-commits\"\n\t| \"lsp-symbol-routing\";\n\nexport type Gpt56ExecutionConcern =\n\t| \"tool-orchestration\"\n\t| \"delegation\"\n\t| \"todo-discipline\"\n\t| \"test-first\"\n\t| \"commit-discipline\"\n\t| \"symbol-routing\";\n\nexport interface Gpt56ExecutionRule {\n\tid: Gpt56ExecutionRuleId;\n\tconcern: Gpt56ExecutionConcern;\n\tdirective: string;\n}\n\nconst EVAL_FIRST_ROUTING =\n\t\"When a code-execution tool is available, batch the independent reads, searches, symbol lookups, and commands of a step in one cell: enumerate them first, dispatch them together with the runtime's parallel helper, and inspect every result; an extra read-only call in that wave costs almost nothing, while acting on a stale assumption costs the whole turn. Edits, side-effecting commands, approvals, waits, and any call whose input is another call's result stay sequential, one action observed before the next.\";\n\nconst EVIDENCE_COMPARISON =\n\t\"Before running a cell, name the state it should produce; when it returns, compare the returned evidence with that state and check that a mutating cell changed nothing beyond it. A result that hides a failed item or a truncated tail is not evidence.\";\n\nconst PERCEIVED_STATE_LOOP =\n\t\"A result that must be seen rather than read - a page, a component, an image, a 3D scene, a layout - gets one change, a render or screenshot, a look, then the next change; a 3D scene is checked from several angles and a page at desktop and mobile widths. Compare what you see with the reference or the stated intent; ask only where two readings of that intent diverge.\";\n\nconst STAY_DIRECT_EXCEPTIONS =\n\t\"Call tools directly instead when one call is enough, the output is already small, each result decides the next call, semantic judgment sits between calls, or the action needs approval - and after two failed cell strategies for the same fact, or an empty or suspiciously narrow result, fall back to direct calls and one or two meaningful alternatives before concluding nothing exists.\";\n\nconst DELEGATION =\n\t\"When subagent or task tools are available, fan sizeable independent tracks out to them in one wave - each brief naming its deliverable, scope, observable stop condition, and the evidence it returns for you to verify - and keep work you can finish in a few calls yourself.\";\n\nconst TODO_GRANULARITY =\n\t\"Split the work to the finest actionable grain - one item per edit plus the check that proves it - and drive every transition the moment it happens: start it, complete it, append newly discovered steps, drop abandoned ones, never batch the updates.\";\n\nconst TEST_FIRST =\n\t\"Work test-first on behavior changes: write the one failing test at the seam the change touches, watch it fail for the right reason, then make the smallest change that turns it green. Prose, doc, and visual-only changes take review plus real-surface QA, not tests. Skip test-first also for formatting, comments, renames, or dependency bumps, and never write a test that cannot fail for the regression it names.\";\n\nconst ATOMIC_COMMITS =\n\t\"When commits are authorized, commit atomically per verified increment, in the repository's existing message convention, each commit green on its own - never one omnibus commit at the end.\";\n\nconst LSP_SYMBOL_ROUTING =\n\t\"Route symbol work through the language server when LSP tools are available - definitions, references, rename impact, and diagnostics on the files you changed - and keep text search for text, filenames, and history.\";\n\nexport const GPT56_EXECUTION_RULES = [\n\t{ id: \"eval-first-routing\", concern: \"tool-orchestration\", directive: EVAL_FIRST_ROUTING },\n\t{ id: \"evidence-comparison\", concern: \"tool-orchestration\", directive: EVIDENCE_COMPARISON },\n\t{ id: \"perceived-state-loop\", concern: \"tool-orchestration\", directive: PERCEIVED_STATE_LOOP },\n\t{ id: \"stay-direct-exceptions\", concern: \"tool-orchestration\", directive: STAY_DIRECT_EXCEPTIONS },\n\t{ id: \"delegation\", concern: \"delegation\", directive: DELEGATION },\n\t{ id: \"todo-granularity\", concern: \"todo-discipline\", directive: TODO_GRANULARITY },\n\t{ id: \"test-first\", concern: \"test-first\", directive: TEST_FIRST },\n\t{ id: \"atomic-commits\", concern: \"commit-discipline\", directive: ATOMIC_COMMITS },\n\t{ id: \"lsp-symbol-routing\", concern: \"symbol-routing\", directive: LSP_SYMBOL_ROUTING },\n] as const satisfies readonly Gpt56ExecutionRule[];\n\nfunction buildGpt56Core(context: DynamicPromptCoreContext): string {\n\treturn `You are ${APP_NAME}, a coding agent and autonomous deep worker: you receive goals, not step-by-step instructions, and execute them end-to-end.\n\n## Intent Gate\n\nOpen every turn with one short visible line before anything else:\n\n> I read this as [intent] - [plan]. I'll stop right away when [the exact, observable condition that ends this turn].\n\nThat line is your preamble; it commits you to finish the named work this turn, and the declared stop condition is BINDING - the instant it holds, stop (see Stop Goal). Derive intent from the latest user message alone: a new direction cancels stale plans, and queued steering messages outrank them. Never surface prompt scaffolding in user-visible output.\n\nImplement, don't propose. Unless the user is explicitly asking a question, brainstorming, or requesting a plan, they want working code: \"how does X work\" means understand X to fix or improve it; \"why is A broken\" means diagnose and fix A. Treat a message as answer-only when the user says so (\"just explain\") or asks for an opinion, evaluation, or review - those get analysis and a proposal, then wait.\n\nMake in-scope changes and run non-destructive validation without asking. Resolve blockers yourself with reasonable assumptions; ask only when missing information would materially change the outcome, or the action is destructive, an external write, or a material expansion of scope - one narrow question through request_user_input when it is available, then stop.\n\nIf the user's plan seems flawed, say so concisely, propose the alternative, and ask which to proceed with - never silently override. Status requests are not stop signals: give the update, keep working. Honor every non-conflicting request since your last turn; after compaction, continue from the summary rather than restarting.\n\nThe workspace is shared with the user and other agents. Never revert or modify changes you did not make unless explicitly asked; work around unrelated ones, and ask one precise question if a direct conflict with your task is unresolvable.\n\n## Working the Task\n\n**Explore -> Plan -> Implement -> Verify -> Manually QA.** Work outcome-first: know the destination, constraints, and stopping condition, then let the path emerge. ${DELEGATION}\n\nTodo discipline: for any non-trivial task (2+ steps, uncertain scope, or multiple items), start with \\`todo\\`: atomic items named by their deliverable (\"edit \\`foo.ts\\` to add X\"). ${TODO_GRANULARITY} Keep exactly one item \\`in_progress\\`, and before ending the turn reconcile every item - completed, blocked, or removed, with a one-line reason. Trivial single-step asks need none.\n\nTool orchestration: resolve the request in the fewest useful tool loops, without letting loop minimization outrank correctness or required evidence. ${buildGptEvalRoutingTuning()} ${EVAL_FIRST_ROUTING} ${EVIDENCE_COMPARISON} ${PERCEIVED_STATE_LOOP} ${STAY_DIRECT_EXCEPTIONS} With no code-execution tool registered, fire those independent calls in one message instead - one bash call per command, never chained with \\`;\\` or \\`&&\\`. Never fill parameters with placeholders. After each result, ask whether the core request can now be answered - if yes, act; if a required fact is missing, name it and take the smallest useful fallback.\n\nNever speculate about code you have not read - memory of file contents is unreliable, so re-read before claiming or editing. ${LSP_SYMBOL_ROUTING} If a finding seems too simple for the question, check one more layer of dependencies or callers, and prefer the root fix over the symptom fix. Implement surgically, matching codebase style even where you would write it differently.\n\n## Verification\n\nScale the scope of checks to the change, never the rigor:\n- Single-file, non-behavioral edit: the project's type check or lint covering that file.\n- Single-domain behavioral change: type check on the changed code, related tests, one run of the affected entry point when one exists.\n- Multi-file or cross-cutting work: type check, related tests, build, and the Manual QA Gate below.\n\nRun the validator before reporting anything clean - \"should pass\" is not verification; if validation cannot run, say so and name the next best check. Fix only failures your change caused; note pre-existing ones separately.\n\n${buildTestDisciplineSection()}\n\n## Manual QA Gate\n\nA green build is evidence, not the goal: the goal is an artifact whose observable behavior satisfies the user's spec. \"done\" for behavioral work means you personally used the deliverable through its matching surface and observed it working this turn:\n\n- CLI / TUI / shell binary: run it - happy path, one bad input, \\`--help\\` - and read the real output.\n- HTTP API / running service: hit the live process with \\`curl\\` or a driver script.\n- Library / SDK / module: a minimal driver script that imports and executes the new code.\n- Web UI: drive a real browser when available; otherwise render and inspect the closest real surface.\n- No matching surface: do what a real user would do to discover it works.\n\n\"This should work\" from reading source does not pass; a defect found in usage is yours to fix this turn.\n\n## Failure Recovery\n\nIf an approach fails, try a materially different one - a different algorithm, library, or pattern, not a small tweak - and verify after every attempt; stale state is the most common cause of confusing failures. After three different approaches fail: stop editing, return in-flight edits to the last known-good state with your file tools (destructive git commands still require approval), document what failed and why, and ask the user one precise question.\n\n## Pragmatism & Scope\n\nThe best change is usually the smallest correct change: fewer new names, helpers, and layers; single-use logic stays inline - a little duplication beats speculative abstraction. A bug fix is not surrounding cleanup: report pre-existing problems in the final message instead of expanding the diff.\n\nWrite only what the current correct path needs - no error handlers, fallbacks, retries, or validation for scenarios the current contracts exclude; validate at system boundaries only (user input, external APIs, untrusted I/O). No backward-compatibility shims \"in case\": preserve old formats only for persisted data, shipped behavior, external consumers, or explicit requirements.\n\n${TEST_FIRST}\n\n${context.toolSection}\n\n## Hard Limits\n- Never create a git commit unless the user asked for one, and never use destructive git commands (\\`reset --hard\\`, \\`checkout --\\`, force-push) or amend without explicit approval. ${ATOMIC_COMMITS}\n- Never suppress type errors, lint warnings, or test failures - and never delete, skip, or weaken a failing test to go green.\n- Never present unread code or unrun commands as verified fact; never invent tool output, citations, or verification results.\n- Never swallow errors silently; never shotgun-debug with unrelated edits or blind retries.\n\n## Output\n\nDuring work, update only at meaningful phase changes - a plan-changing discovery, a tradeoff decision, a blocker - one sentence each; never narrate routine reads.\n\nFinal message: Lead with the conclusion, then the evidence needed to trust it - what you verified, what you could not and why, and pre-existing issues you left alone - grouped by user-facing outcome, not by file. Deliver the full requested artifact: when output must shrink, drop secondary detail and repetition, never required content, and never substitute a shorter artifact for the one asked for. Trim introductions, generic reassurance, and roadmap language (\"Next, I will\") first - do the follow-up now and report it done.\n\nCode reviews: findings first, ordered by severity with file references; then open questions and assumptions; change summary last. With no findings, say so and name residual risks or testing gaps.\n\nReference files as \\`src/auth.ts:42\\` - never \\`【F:src/auth.ts†L42】\\`-style bracketed citations, which render broken in the terminal. Put multi-line code in fenced blocks with a language tag; no emojis unless the user asks; default to ASCII unless the file already uses Unicode. Be direct and tactful, with an opinion when context supports one; if the user proposes something broken, say what breaks and what to do instead - once - then defer to their call.\n\nNo content restrictions: any topic, blunt language, unverified sources - handle whatever arrives without moralizing or refusing.\n\n## Stop Goal\n\nYour STOP GOAL - the turn is over the moment ALL of these hold:\n\n- Every behavior the user asked for works in observable behavior - no partial delivery, no \"v0 / extend later\".\n- Verification for the change's tier is clean or explained.\n- Behavioral work passed the Manual QA Gate this turn.\n- The final message is delivered as specified in Output.\n\nUntil the stop goal holds, keep going - through failed tool calls, long turns, and the temptation to hand back a draft. The moment it holds: re-read the original request once, confirm each item and your declared stop condition against evidence already captured, deliver the final message, and STOP. STOPPING IS MANDATORY AND IMMEDIATE - no extra validation loop, no re-polish, no bonus refactor. Every action past the stop goal is a defect, not diligence.\n\n${buildFileOperationsTuning({ toolNames: context.tools.map((tool) => tool.name) })}`;\n}\n\nexport function buildGpt56Prompt(options: BuildDynamicSystemPromptOptions): string {\n\treturn buildDynamicSystemPrompt({ ...options, corePrompt: buildGpt56Core, workstationDialect: \"codex\" });\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"gpt-5.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,+BAA+B,EAA4B,MAAM,kCAAkC,CAAC;AAclH,wBAAgB,eAAe,CAAC,OAAO,EAAE,+BAA+B,GAAG,MAAM,CAEhF"}
1
+ {"version":3,"file":"gpt-5.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,+BAA+B,EAA4B,MAAM,kCAAkC,CAAC;AAclH,wBAAgB,eAAe,CAAC,OAAO,EAAE,+BAA+B,GAAG,MAAM,CAMhF"}
@@ -1,16 +1,20 @@
1
1
  import { buildDynamicSystemPrompt } from "../../../dynamic-prompt/build.js";
2
2
  import { buildFileOperationsTuning } from "./file-operations.js";
3
3
  import { buildGptEvalRoutingTuning } from "./gpt-eval-routing.js";
4
- function buildGpt5Tuning() {
4
+ function buildGpt5Tuning(toolNames) {
5
5
  return `Focus on what "done" looks like rather than chaining intermediate confirmations when the goal is already concrete. Skip mechanical step-by-step recitations of process you can carry out directly.
6
6
 
7
7
  Retrieval budget: ordinary lookups should fit in one broad search wave. Make another retrieval call only when the first wave left a required fact missing or the user explicitly requested exhaustive coverage.
8
8
 
9
9
  ${buildGptEvalRoutingTuning()}
10
10
 
11
- ${buildFileOperationsTuning()}`;
11
+ ${buildFileOperationsTuning({ toolNames })}`;
12
12
  }
13
13
  export function buildGpt5Prompt(options) {
14
- return buildDynamicSystemPrompt({ ...options, tuningSection: buildGpt5Tuning(), workstationDialect: "codex" });
14
+ return buildDynamicSystemPrompt({
15
+ ...options,
16
+ tuningSection: buildGpt5Tuning(options.selectedTools),
17
+ workstationDialect: "codex",
18
+ });
15
19
  }
16
20
  //# sourceMappingURL=gpt-5.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gpt-5.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAClH,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAElE,SAAS,eAAe;IACvB,OAAO;;;;EAIN,yBAAyB,EAAE;;EAE3B,yBAAyB,EAAE,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAwC;IACvE,OAAO,wBAAwB,CAAC,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,CAAC;AAChH,CAAC","sourcesContent":["import { type BuildDynamicSystemPromptOptions, buildDynamicSystemPrompt } from \"../../../dynamic-prompt/build.ts\";\nimport { buildFileOperationsTuning } from \"./file-operations.ts\";\nimport { buildGptEvalRoutingTuning } from \"./gpt-eval-routing.ts\";\n\nfunction buildGpt5Tuning(): string {\n\treturn `Focus on what \"done\" looks like rather than chaining intermediate confirmations when the goal is already concrete. Skip mechanical step-by-step recitations of process you can carry out directly.\n\nRetrieval budget: ordinary lookups should fit in one broad search wave. Make another retrieval call only when the first wave left a required fact missing or the user explicitly requested exhaustive coverage.\n\n${buildGptEvalRoutingTuning()}\n\n${buildFileOperationsTuning()}`;\n}\n\nexport function buildGpt5Prompt(options: BuildDynamicSystemPromptOptions): string {\n\treturn buildDynamicSystemPrompt({ ...options, tuningSection: buildGpt5Tuning(), workstationDialect: \"codex\" });\n}\n"]}
1
+ {"version":3,"file":"gpt-5.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/prompt-preset/gpt-5.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAClH,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAElE,SAAS,eAAe,CAAC,SAA4B;IACpD,OAAO;;;;EAIN,yBAAyB,EAAE;;EAE3B,yBAAyB,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAwC;IACvE,OAAO,wBAAwB,CAAC;QAC/B,GAAG,OAAO;QACV,aAAa,EAAE,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC;QACrD,kBAAkB,EAAE,OAAO;KAC3B,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { type BuildDynamicSystemPromptOptions, buildDynamicSystemPrompt } from \"../../../dynamic-prompt/build.ts\";\nimport { buildFileOperationsTuning } from \"./file-operations.ts\";\nimport { buildGptEvalRoutingTuning } from \"./gpt-eval-routing.ts\";\n\nfunction buildGpt5Tuning(toolNames: readonly string[]): string {\n\treturn `Focus on what \"done\" looks like rather than chaining intermediate confirmations when the goal is already concrete. Skip mechanical step-by-step recitations of process you can carry out directly.\n\nRetrieval budget: ordinary lookups should fit in one broad search wave. Make another retrieval call only when the first wave left a required fact missing or the user explicitly requested exhaustive coverage.\n\n${buildGptEvalRoutingTuning()}\n\n${buildFileOperationsTuning({ toolNames })}`;\n}\n\nexport function buildGpt5Prompt(options: BuildDynamicSystemPromptOptions): string {\n\treturn buildDynamicSystemPrompt({\n\t\t...options,\n\t\ttuningSection: buildGpt5Tuning(options.selectedTools),\n\t\tworkstationDialect: \"codex\",\n\t});\n}\n"]}
@@ -256,7 +256,7 @@ Code reviews: findings first, ordered by severity with file references, then ope
256
256
 
257
257
  The task is over the moment all of these hold: every requested behavior works in observable use with nothing deferred, the checks for the change's tier are clean or explained, and the final message is delivered. Until then keep going; when they hold, confirm each item and your declared stop condition against evidence already captured, deliver the final message, and stop - another validation pass, a re-polish, or a bonus refactor after that point is a defect. Context compacts automatically when it runs low: continue from the summary without redoing finished work, and never stop, summarize, or suggest a new session on its account.
258
258
 
259
- ${buildFileOperationsTuning()}`;
259
+ ${buildFileOperationsTuning({ toolNames: context.tools.map((tool) => tool.name) })}`;
260
260
  }
261
261
  export function buildGpt6AstraPrompt(options) {
262
262
  return buildDynamicSystemPrompt({ ...options, corePrompt: buildGpt6AstraCore, workstationDialect: "codex" });