cli-jaw 2.2.9 → 2.2.11

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 (225) hide show
  1. package/README.ja.md +15 -0
  2. package/README.ko.md +15 -0
  3. package/README.md +19 -4
  4. package/dist/bin/cli-jaw.js +5 -1
  5. package/dist/bin/cli-jaw.js.map +1 -1
  6. package/dist/bin/commands/doctor.js +66 -1
  7. package/dist/bin/commands/doctor.js.map +1 -1
  8. package/dist/bin/commands/init.js +107 -8
  9. package/dist/bin/commands/init.js.map +1 -1
  10. package/dist/bin/commands/slack.js +190 -0
  11. package/dist/bin/commands/slack.js.map +1 -0
  12. package/dist/lib/upload.js +5 -1
  13. package/dist/lib/upload.js.map +1 -1
  14. package/dist/server.js +1 -0
  15. package/dist/server.js.map +1 -1
  16. package/dist/src/agent/alert-escalation.js +1 -1
  17. package/dist/src/agent/alert-escalation.js.map +1 -1
  18. package/dist/src/agent/codex-app-catalog.js +57 -0
  19. package/dist/src/agent/codex-app-catalog.js.map +1 -0
  20. package/dist/src/agent/codex-app-client.js +89 -7
  21. package/dist/src/agent/codex-app-client.js.map +1 -1
  22. package/dist/src/agent/pi-rpc-verdict.js +22 -0
  23. package/dist/src/agent/pi-rpc-verdict.js.map +1 -0
  24. package/dist/src/agent/pi-runtime.js +240 -0
  25. package/dist/src/agent/pi-runtime.js.map +1 -1
  26. package/dist/src/agent/runtime-pool.js +445 -0
  27. package/dist/src/agent/runtime-pool.js.map +1 -0
  28. package/dist/src/agent/spawn.js +395 -240
  29. package/dist/src/agent/spawn.js.map +1 -1
  30. package/dist/src/cli/command-context.js +5 -2
  31. package/dist/src/cli/command-context.js.map +1 -1
  32. package/dist/src/cli/commands.js +43 -39
  33. package/dist/src/cli/commands.js.map +1 -1
  34. package/dist/src/cli/handlers-runtime.js +15 -7
  35. package/dist/src/cli/handlers-runtime.js.map +1 -1
  36. package/dist/src/cli/handlers-search.js +1 -1
  37. package/dist/src/cli/handlers-search.js.map +1 -1
  38. package/dist/src/cli/handlers-skill-invoke.js +1 -1
  39. package/dist/src/cli/handlers-skill-invoke.js.map +1 -1
  40. package/dist/src/cli/handlers-workflows.js +1 -1
  41. package/dist/src/cli/handlers-workflows.js.map +1 -1
  42. package/dist/src/cli/handlers.js +1 -1
  43. package/dist/src/cli/handlers.js.map +1 -1
  44. package/dist/src/cli/opencodex-models.js +40 -7
  45. package/dist/src/cli/opencodex-models.js.map +1 -1
  46. package/dist/src/cli/registry-live.js +6 -5
  47. package/dist/src/cli/registry-live.js.map +1 -1
  48. package/dist/src/command-contract/catalog.js +4 -0
  49. package/dist/src/command-contract/catalog.js.map +1 -1
  50. package/dist/src/core/config.js +69 -4
  51. package/dist/src/core/config.js.map +1 -1
  52. package/dist/src/core/runtime-settings.js +17 -0
  53. package/dist/src/core/runtime-settings.js.map +1 -1
  54. package/dist/src/core/settings-merge.js +1 -1
  55. package/dist/src/core/settings-merge.js.map +1 -1
  56. package/dist/src/discord/bot.js +29 -14
  57. package/dist/src/discord/bot.js.map +1 -1
  58. package/dist/src/discord/commands.js +5 -4
  59. package/dist/src/discord/commands.js.map +1 -1
  60. package/dist/src/discord/discord-file.js +8 -2
  61. package/dist/src/discord/discord-file.js.map +1 -1
  62. package/dist/src/discord/forwarder.js +17 -19
  63. package/dist/src/discord/forwarder.js.map +1 -1
  64. package/dist/src/discord/send-only-client.js +9 -1
  65. package/dist/src/discord/send-only-client.js.map +1 -1
  66. package/dist/src/manager/dashboard-service.js +38 -1
  67. package/dist/src/manager/dashboard-service.js.map +1 -1
  68. package/dist/src/manager/telegram-hub/hub-bot.js +47 -29
  69. package/dist/src/manager/telegram-hub/hub-bot.js.map +1 -1
  70. package/dist/src/messaging/channel-health.js +32 -0
  71. package/dist/src/messaging/channel-health.js.map +1 -1
  72. package/dist/src/messaging/chunk.js +376 -0
  73. package/dist/src/messaging/chunk.js.map +1 -0
  74. package/dist/src/messaging/dedupe.js +104 -0
  75. package/dist/src/messaging/dedupe.js.map +1 -0
  76. package/dist/src/messaging/fold.js +210 -0
  77. package/dist/src/messaging/fold.js.map +1 -0
  78. package/dist/src/messaging/redact.js +577 -0
  79. package/dist/src/messaging/redact.js.map +1 -0
  80. package/dist/src/messaging/retry.js +76 -0
  81. package/dist/src/messaging/retry.js.map +1 -0
  82. package/dist/src/messaging/runtime.js +6 -3
  83. package/dist/src/messaging/runtime.js.map +1 -1
  84. package/dist/src/messaging/send.js +45 -15
  85. package/dist/src/messaging/send.js.map +1 -1
  86. package/dist/src/messaging/slack-target.js +50 -0
  87. package/dist/src/messaging/slack-target.js.map +1 -0
  88. package/dist/src/messaging/types.js.map +1 -1
  89. package/dist/src/orchestrator/pipeline.js +4 -4
  90. package/dist/src/orchestrator/pipeline.js.map +1 -1
  91. package/dist/src/routes/command.js +11 -7
  92. package/dist/src/routes/command.js.map +1 -1
  93. package/dist/src/routes/messaging.js +28 -12
  94. package/dist/src/routes/messaging.js.map +1 -1
  95. package/dist/src/routes/settings.js +22 -6
  96. package/dist/src/routes/settings.js.map +1 -1
  97. package/dist/src/slack/api.js +116 -0
  98. package/dist/src/slack/api.js.map +1 -0
  99. package/dist/src/slack/bot.js +262 -0
  100. package/dist/src/slack/bot.js.map +1 -0
  101. package/dist/src/slack/commands.js +98 -0
  102. package/dist/src/slack/commands.js.map +1 -0
  103. package/dist/src/slack/events.js +116 -0
  104. package/dist/src/slack/events.js.map +1 -0
  105. package/dist/src/slack/format.js +58 -0
  106. package/dist/src/slack/format.js.map +1 -0
  107. package/dist/src/slack/forwarder.js +57 -0
  108. package/dist/src/slack/forwarder.js.map +1 -0
  109. package/dist/src/slack/manifest.js +84 -0
  110. package/dist/src/slack/manifest.js.map +1 -0
  111. package/dist/src/slack/register.js +13 -0
  112. package/dist/src/slack/register.js.map +1 -0
  113. package/dist/src/slack/send-handler.js +41 -0
  114. package/dist/src/slack/send-handler.js.map +1 -0
  115. package/dist/src/slack/send-only-client.js +46 -0
  116. package/dist/src/slack/send-only-client.js.map +1 -0
  117. package/dist/src/slack/slack-file.js +72 -0
  118. package/dist/src/slack/slack-file.js.map +1 -0
  119. package/dist/src/slack/socket.js +341 -0
  120. package/dist/src/slack/socket.js.map +1 -0
  121. package/dist/src/telegram/bot.js +117 -37
  122. package/dist/src/telegram/bot.js.map +1 -1
  123. package/dist/src/telegram/elicitation-buttons.js +7 -2
  124. package/dist/src/telegram/elicitation-buttons.js.map +1 -1
  125. package/dist/src/telegram/forwarder.js +15 -7
  126. package/dist/src/telegram/forwarder.js.map +1 -1
  127. package/dist/src/telegram/rich-message.js +209 -24
  128. package/dist/src/telegram/rich-message.js.map +1 -1
  129. package/dist/src/telegram/telegram-file.js +35 -4
  130. package/dist/src/telegram/telegram-file.js.map +1 -1
  131. package/dist/src/telegram/voice.js +4 -3
  132. package/dist/src/telegram/voice.js.map +1 -1
  133. package/package.json +7 -1
  134. package/public/assets/providers/slack.svg +1 -0
  135. package/public/dist/assets/ChannelsDiscord-D9FLnZso.js +1 -0
  136. package/public/dist/assets/ChannelsSlack-ybvupgdK.js +1 -0
  137. package/public/dist/assets/ChannelsTelegram-BOCOPrBc.js +1 -0
  138. package/public/dist/assets/HealthBadge-megTlF4n.js +1 -0
  139. package/public/dist/assets/TransportStatusChips-CjEySMis.js +1 -0
  140. package/public/dist/assets/app-BGIAy4he.js +55 -0
  141. package/public/dist/assets/{bgtask-badge-CdBqBy1L.js → bgtask-badge-DXca8E7c.js} +1 -1
  142. package/public/dist/assets/bgtask-badge-GRSiNILQ.js +1 -0
  143. package/public/dist/assets/{employees-C8qufeJl.js → employees-BL4qMxJj.js} +1 -1
  144. package/public/dist/assets/iframe-renderer-BUSk0Rw9.js +1 -0
  145. package/public/dist/assets/{iframe-renderer-CZ67aeTO.js → iframe-renderer-DUI0LYBy.js} +2 -2
  146. package/public/dist/assets/{manager-CLXT60M5.js → manager-B-gpf-3j.js} +3 -3
  147. package/public/dist/assets/{memory-lWramLVw.js → memory-B_Y0L0KD.js} +1 -1
  148. package/public/dist/assets/memory-CX6YahTc.js +1 -0
  149. package/public/dist/assets/message-history-Det7u76S.js +1 -0
  150. package/public/dist/assets/{message-history-2NUN3UxM.js → message-history-Dl8dJzez.js} +1 -1
  151. package/public/dist/assets/{provider-icons-stsNmQKx.js → provider-icons-VDfahiUp.js} +3 -2
  152. package/public/dist/assets/{render-CsF-ojLe.js → render-BI1aqKoc.js} +1 -1
  153. package/public/dist/assets/{settings-BMLowRCh.js → settings-B0Sj4sUH.js} +1 -1
  154. package/public/dist/assets/settings-C7NutP6X.js +1 -0
  155. package/public/dist/assets/settings-core-CyX-px6_.js +100 -0
  156. package/public/dist/assets/settings-core-DVpFmrhY.js +1 -0
  157. package/public/dist/assets/{sidebar-gKjYLv49.js → sidebar-DOR9fTgN.js} +3 -3
  158. package/public/dist/assets/skills-BWhKreQ2.js +1 -0
  159. package/public/dist/assets/{skills-CKTbomdm.js → skills-wt0fkV9Y.js} +1 -1
  160. package/public/dist/assets/slash-commands-BZbqTg3v.js +20 -0
  161. package/public/dist/assets/slash-commands-Di4NDA4w.js +1 -0
  162. package/public/dist/assets/{trace-drawer-C3G4mmB1.js → trace-drawer-kMYzaVFW.js} +1 -1
  163. package/public/dist/assets/ui-BghexWrB.js +1 -0
  164. package/public/dist/assets/{ui-CVVC_flX.js → ui-D4D5HUfo.js} +1 -1
  165. package/public/dist/index.html +62 -1
  166. package/public/dist/manager/index.html +1 -1
  167. package/public/index.html +61 -0
  168. package/public/js/features/command-info.ts +1 -0
  169. package/public/js/features/help-content.ts +8 -0
  170. package/public/js/features/settings-channel.ts +5 -1
  171. package/public/js/features/settings-core.ts +2 -0
  172. package/public/js/features/settings-slack.ts +74 -0
  173. package/public/js/features/settings-types.ts +5 -1
  174. package/public/js/features/settings.ts +1 -0
  175. package/public/js/features/transport-status-row.ts +15 -3
  176. package/public/js/main.ts +19 -0
  177. package/public/js/provider-icons.ts +4 -1
  178. package/public/js/ws.ts +1 -1
  179. package/public/locales/en.json +21 -0
  180. package/public/locales/ja.json +21 -0
  181. package/public/locales/ko.json +21 -0
  182. package/public/locales/zh.json +21 -0
  183. package/public/manager/src/settings/SettingsShell.tsx +1 -0
  184. package/public/manager/src/settings/SettingsSidebar.tsx +1 -0
  185. package/public/manager/src/settings/pages/ChannelsSlack.tsx +323 -0
  186. package/public/manager/src/settings/pages/components/ActiveChannelToggle.tsx +2 -1
  187. package/public/manager/src/settings/pages/components/TransportStatusChips.tsx +13 -4
  188. package/public/manager/src/settings/types.ts +1 -0
  189. package/scripts/bundle-sidecar.sh +13 -4
  190. package/scripts/check-redaction-sinks.mjs +276 -0
  191. package/scripts/check-sidecar-prune-safety.mjs +167 -0
  192. package/scripts/pi-rpc-probe.mts +361 -0
  193. package/scripts/pick-gyp-python.sh +61 -0
  194. package/scripts/release-gates.mjs +97 -0
  195. package/scripts/release-preview.sh +8 -1
  196. package/scripts/release.sh +13 -2
  197. package/scripts/sync-electron-version.cjs +93 -0
  198. package/public/dist/assets/ChannelsDiscord-Bt1_rtNC.js +0 -1
  199. package/public/dist/assets/ChannelsTelegram-BLV0m1oq.js +0 -1
  200. package/public/dist/assets/TransportStatusChips-Bld0yXi7.js +0 -1
  201. package/public/dist/assets/app-iSJhsP20.js +0 -55
  202. package/public/dist/assets/bgtask-badge-CSkSsoB6.js +0 -1
  203. package/public/dist/assets/iframe-renderer-DXdo0YXN.js +0 -1
  204. package/public/dist/assets/memory-DeKUlD2M.js +0 -1
  205. package/public/dist/assets/message-history-CWTQ2woA.js +0 -1
  206. package/public/dist/assets/settings-CDjs7hTT.js +0 -1
  207. package/public/dist/assets/settings-core-Cs_oq-b3.js +0 -99
  208. package/public/dist/assets/settings-core-D-TOh1a6.js +0 -1
  209. package/public/dist/assets/skills-GuIfNASs.js +0 -1
  210. package/public/dist/assets/slash-commands-BtZa093n.js +0 -20
  211. package/public/dist/assets/slash-commands-DGJKfpMT.js +0 -1
  212. package/public/dist/assets/ui-DJg5Q_NJ.js +0 -1
  213. /package/public/dist/assets/{DashboardMeta-B7CVqXcU.js → DashboardMeta-DennaaA_.js} +0 -0
  214. /package/public/dist/assets/{Display-BF-rACK6.js → Display-hGuSn_W5.js} +0 -0
  215. /package/public/dist/assets/{Employees-D3hnciP0.js → Employees-B5YXk5ma.js} +0 -0
  216. /package/public/dist/assets/{Heartbeat-D4Pn5O3O.js → Heartbeat-vDGhPfct.js} +0 -0
  217. /package/public/dist/assets/{Mcp-SfytKWGX.js → Mcp-BHWnJ6SP.js} +0 -0
  218. /package/public/dist/assets/{Memory-DNxBOQ7N.js → Memory-B_UZ-iCA.js} +0 -0
  219. /package/public/dist/assets/{ModelProvider-CXwtlG7l.js → ModelProvider-CgUvs6pE.js} +0 -0
  220. /package/public/dist/assets/{Network-DISUhige.js → Network-AWpSkALD.js} +0 -0
  221. /package/public/dist/assets/{Profile-B8yBO3Ju.js → Profile-DnIE2ios.js} +0 -0
  222. /package/public/dist/assets/{Prompts-5lNQ5qOm.js → Prompts-B9aKLall.js} +0 -0
  223. /package/public/dist/assets/{SpeechKeys-BepaIHBa.js → SpeechKeys-K4Be_o7z.js} +0 -0
  224. /package/public/dist/assets/{TelegramHub--DNjRAwW.js → TelegramHub-CFwSkzHP.js} +0 -0
  225. /package/public/dist/assets/{TerminalPanel-DQovYfwz.js → TerminalPanel-CdlFZHAK.js} +0 -0
@@ -4,9 +4,19 @@
4
4
  import { spawn } from 'child_process';
5
5
  import { EventEmitter } from 'events';
6
6
  import { createInterface } from 'readline';
7
+ // A bogus thread/resume on codex-cli 0.146.0 returns "no rollout found for thread id ...".
8
+ const RECOVERABLE_RESUME_RE = /not found|no rollout found|unknown thread|no such thread|invalid thread|thread.*missing/i;
9
+ export function isRecoverableResumeError(message) {
10
+ return RECOVERABLE_RESUME_RE.test(message);
11
+ }
12
+ const TERMINAL_INTERRUPT_RACE_RE = /turn not active|already completed|no active turn|unknown turn/i;
13
+ function isTerminalInterruptRaceError(err) {
14
+ return TERMINAL_INTERRUPT_RACE_RE.test(err.message);
15
+ }
7
16
  export class CodexAppClient extends EventEmitter {
8
17
  proc = null;
9
18
  threadId = null;
19
+ activeTurnId = null;
10
20
  binary;
11
21
  workDir;
12
22
  spawnEnv;
@@ -17,6 +27,7 @@ export class CodexAppClient extends EventEmitter {
17
27
  pending = new Map();
18
28
  rl = null;
19
29
  cleaned = false;
30
+ pendingInterrupt = false;
20
31
  constructor(options = {}) {
21
32
  super();
22
33
  this.binary = options.binary || 'codex';
@@ -26,11 +37,43 @@ export class CodexAppClient extends EventEmitter {
26
37
  this.effort = options.effort || 'medium';
27
38
  this.fastMode = options.fastMode ?? false;
28
39
  }
40
+ get alive() {
41
+ return this.proc !== null && this.proc.exitCode === null && !this.proc.killed;
42
+ }
43
+ listenTurn(handlers) {
44
+ const onNotification = (method, params) => {
45
+ handlers.onNotification(method, params);
46
+ };
47
+ const onStderr = (text) => { handlers.onStderr(text); };
48
+ const onExit = (code, signal) => { handlers.onExit?.(code, signal); };
49
+ const onError = (err) => { handlers.onError?.(err); };
50
+ const onInterruptFailed = (err) => { handlers.onInterruptFailed?.(err); };
51
+ this.on('notification', onNotification);
52
+ this.on('stderr', onStderr);
53
+ this.on('exit', onExit);
54
+ this.on('error', onError);
55
+ this.on('interrupt-failed', onInterruptFailed);
56
+ let disposed = false;
57
+ return {
58
+ dispose: () => {
59
+ if (disposed)
60
+ return;
61
+ disposed = true;
62
+ this.off('notification', onNotification);
63
+ this.off('stderr', onStderr);
64
+ this.off('exit', onExit);
65
+ this.off('error', onError);
66
+ this.off('interrupt-failed', onInterruptFailed);
67
+ },
68
+ };
69
+ }
29
70
  spawn() {
71
+ const isCmdShim = process.platform === 'win32' && !this.binary.toLowerCase().endsWith('.exe');
30
72
  this.proc = spawn(this.binary, ['app-server', '--listen', 'stdio://'], {
31
73
  cwd: this.workDir,
32
74
  env: this.spawnEnv,
33
75
  stdio: ['pipe', 'pipe', 'pipe'],
76
+ ...(isCmdShim ? { shell: true } : {}),
34
77
  });
35
78
  this.rl = createInterface({ input: this.proc.stdout });
36
79
  this.rl.on('line', (line) => this.handleLine(line));
@@ -69,11 +112,12 @@ export class CodexAppClient extends EventEmitter {
69
112
  sandbox: 'danger-full-access',
70
113
  cwd: options.cwd || this.workDir,
71
114
  config: this.reasoningConfig(),
115
+ ...(options.instructions ? { developerInstructions: options.instructions } : {}),
72
116
  });
73
117
  this.threadId = result.thread.id;
74
118
  return this.threadId;
75
119
  }
76
- async resumeThread(threadId) {
120
+ async resumeThread(threadId, options = {}) {
77
121
  const result = await this.request('thread/resume', {
78
122
  threadId,
79
123
  model: this.model,
@@ -82,6 +126,7 @@ export class CodexAppClient extends EventEmitter {
82
126
  cwd: this.workDir,
83
127
  config: this.reasoningConfig(),
84
128
  excludeTurns: true,
129
+ ...(options.instructions ? { developerInstructions: options.instructions } : {}),
85
130
  });
86
131
  this.threadId = result.thread.id;
87
132
  return this.threadId;
@@ -89,7 +134,7 @@ export class CodexAppClient extends EventEmitter {
89
134
  async startTurn(prompt) {
90
135
  if (!this.threadId)
91
136
  throw new Error('No active thread');
92
- await this.request('turn/start', {
137
+ const result = await this.request('turn/start', {
93
138
  threadId: this.threadId,
94
139
  input: [{
95
140
  type: 'text',
@@ -99,15 +144,32 @@ export class CodexAppClient extends EventEmitter {
99
144
  effort: this.effort || undefined,
100
145
  summary: 'detailed',
101
146
  });
147
+ this.setActiveTurnId(result.turn?.id ?? null);
102
148
  }
103
149
  async interruptTurn() {
104
150
  if (!this.threadId)
105
151
  return;
106
- await this.request('turn/interrupt', { threadId: this.threadId });
152
+ if (!this.activeTurnId) {
153
+ this.pendingInterrupt = true;
154
+ return;
155
+ }
156
+ await this.request('turn/interrupt', {
157
+ threadId: this.threadId,
158
+ turnId: this.activeTurnId,
159
+ });
107
160
  }
108
- async listModels() {
109
- const result = await this.request('model/list', {});
110
- return result.data || [];
161
+ async listModels(options = {}) {
162
+ const all = [];
163
+ let cursor = null;
164
+ do {
165
+ const page = await this.request('model/list', {
166
+ ...(cursor ? { cursor } : {}),
167
+ ...(options.includeHidden ? { includeHidden: true } : {}),
168
+ });
169
+ all.push(...(page.data || []));
170
+ cursor = page.nextCursor ?? null;
171
+ } while (cursor);
172
+ return all;
111
173
  }
112
174
  async closeGracefully() {
113
175
  try {
@@ -210,6 +272,12 @@ export class CodexAppClient extends EventEmitter {
210
272
  return;
211
273
  }
212
274
  if (msg.method) {
275
+ if (msg.method === 'turn/started') {
276
+ this.setActiveTurnId(msg.params?.turn?.id ?? null);
277
+ }
278
+ else if (msg.method === 'turn/completed') {
279
+ this.setActiveTurnId(null);
280
+ }
213
281
  this.emit('notification', msg.method, msg.params || {});
214
282
  if (msg.method === 'error') {
215
283
  this.emit('server-error', msg.params || {});
@@ -230,7 +298,7 @@ export class CodexAppClient extends EventEmitter {
230
298
  const declineResponses = {
231
299
  'item/commandExecution/requestApproval': { decision: 'decline' },
232
300
  'item/fileChange/requestApproval': { decision: 'decline' },
233
- 'item/permissions/requestApproval': { decision: 'decline' },
301
+ 'item/permissions/requestApproval': { permissions: {}, scope: 'turn' },
234
302
  'mcpServer/elicitation/request': { action: 'decline', content: null },
235
303
  'item/tool/requestUserInput': { answers: {} },
236
304
  'execCommandApproval': { decision: 'denied' },
@@ -239,5 +307,19 @@ export class CodexAppClient extends EventEmitter {
239
307
  const result = declineResponses[method] || {};
240
308
  this.trySend({ jsonrpc: '2.0', id, result });
241
309
  }
310
+ setActiveTurnId(id) {
311
+ this.activeTurnId = id;
312
+ if (id && this.pendingInterrupt) {
313
+ this.pendingInterrupt = false;
314
+ void this.request('turn/interrupt', { threadId: this.threadId, turnId: id })
315
+ .catch((err) => {
316
+ if (!isTerminalInterruptRaceError(err)) {
317
+ this.emit('interrupt-failed', err);
318
+ }
319
+ });
320
+ }
321
+ if (!id)
322
+ this.pendingInterrupt = false;
323
+ }
242
324
  }
243
325
  //# sourceMappingURL=codex-app-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"codex-app-client.js","sourceRoot":"","sources":["../../../src/agent/codex-app-client.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yDAAyD;AACzD,0EAA0E;AAE1E,OAAO,EAAE,KAAK,EAAqB,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,eAAe,EAAuC,MAAM,UAAU,CAAC;AAWhF,MAAM,OAAO,cAAe,SAAQ,YAAY;IAC5C,IAAI,GAAwB,IAAI,CAAC;IACjC,QAAQ,GAAkB,IAAI,CAAC;IAEvB,MAAM,CAAS;IACf,OAAO,CAAS;IAChB,QAAQ,CAAoB;IAC5B,KAAK,CAAS;IACd,MAAM,CAAS;IACf,QAAQ,CAAU;IAClB,MAAM,GAAG,CAAC,CAAC;IACX,OAAO,GAAG,IAAI,GAAG,EAGrB,CAAC;IACG,EAAE,GAA6B,IAAI,CAAC;IACpC,OAAO,GAAG,KAAK,CAAC;IAExB,YAAY,UAAiC,EAAE;QAC3C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,SAAS,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC;IAC9C,CAAC;IAED,KAAK;QACD,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE;YACnE,GAAG,EAAE,IAAI,CAAC,OAAO;YACjB,GAAG,EAAE,IAAI,CAAC,QAAQ;YAClB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,MAAO,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAE9B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YAC3C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YAClC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;YAC5C,UAAU,EAAE;gBACR,IAAI,EAAE,0BAA0B;gBAChC,KAAK,EAAE,IAAI;gBACX,OAAO,EAAE,OAAO;aACnB;YACD,YAAY,EAAE;gBACV,eAAe,EAAE,IAAI;gBACrB,yBAAyB,EAAE;oBACvB,8BAA8B;oBAC9B,iCAAiC;iBACpC;aACJ;SACJ,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QAC/B,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,UAGd,EAAE;QACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;YAC9C,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,cAAc,EAAE,OAAO;YACvB,OAAO,EAAE,oBAAoB;YAC7B,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO;YAChC,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE;SACjC,CAA+B,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAAgB;QAC/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;YAC/C,QAAQ;YACR,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,cAAc,EAAE,OAAO;YACvB,OAAO,EAAE,oBAAoB;YAC7B,GAAG,EAAE,IAAI,CAAC,OAAO;YACjB,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE;YAC9B,YAAY,EAAE,IAAI;SACrB,CAA+B,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAc;QAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACxD,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,CAAC;oBACJ,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,MAAM;oBACZ,aAAa,EAAE,EAAE;iBACpB,CAAC;YACF,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,SAAS;YAChC,OAAO,EAAE,UAAU;SACtB,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,aAAa;QACf,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC3B,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAwB,CAAC;QAC3E,OAAO,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,eAAe;QACjB,IAAI,CAAC;YACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,MAAM,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC1F,CAAC;QACL,CAAC;QAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QACxB,MAAM,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,EAAE;YAC1B,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACxD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACZ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,CAAC;iBAAM,CAAC;gBACJ,YAAY,CAAC,CAAC,CAAC,CAAC;gBAAC,CAAC,EAAE,CAAC;YACzB,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,IAAI;QACA,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1B,UAAU,CAAC,GAAG,EAAE;gBACZ,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;oBAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAClE,CAAC,EAAE,IAAI,CAAC,CAAC;QACb,CAAC;IACL,CAAC;IAED,OAAO;QACH,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QACxC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;QACjB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACf,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC9B,CAAC;IAED,iDAAiD;IAEzC,gBAAgB,CAAC,MAAc;QACnC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QACpC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;QAC9B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAEO,OAAO,CAAC,MAAc,EAAE,MAA+B;QAC3D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAC1C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;gBACxD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACxB,MAAM,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAC5C,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,MAAM,CAAC,MAAc,EAAE,MAA+B;QAC1D,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACrD,CAAC;IAEO,OAAO,CAAC,GAA4B;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;QAC/B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QACtF,IAAI,CAAC;YACD,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC;QAChB,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAEO,eAAe;QACnB,OAAO;YACH,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,sBAAsB,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,uBAAuB,EAAE,UAAU;YACnC,oBAAoB,EAAE,KAAK;YAC3B,wBAAwB,EAAE,IAAI;YAC9B,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;SACnD,CAAC;IACN,CAAC;IAEO,UAAU,CAAC,IAAY;QAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,OAAO;QACzB,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAE7B,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC;gBAC1C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC5B,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;oBACZ,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CACpB,kBAAkB,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAC3D,CAAC,CAAC;gBACP,CAAC;qBAAM,CAAC;oBACJ,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAChC,CAAC;gBACD,OAAO;YACX,CAAC;YAED,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBAC/B,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;gBAC/D,OAAO;YACX,CAAC;YAED,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACb,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;gBACxD,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;oBACzB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;gBAChD,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;gBAC5C,CAAC;gBACD,OAAO;YACX,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACL,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QACnC,CAAC;IACL,CAAC;IAEO,mBAAmB,CAAC,EAAmB,EAAE,MAAc,EAAE,MAA+B;QAC5F,OAAO,CAAC,GAAG,CAAC,+BAA+B,MAAM,QAAQ,EAAE,oBAAoB,CAAC,CAAC;QACjF,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAEhD,MAAM,gBAAgB,GAA4B;YAC9C,uCAAuC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;YAChE,iCAAiC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;YAC1D,kCAAkC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;YAC3D,+BAA+B,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE;YACrE,4BAA4B,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;YAC7C,qBAAqB,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;YAC7C,oBAAoB,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;SAC/C,CAAC;QAEF,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC9C,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACjD,CAAC;CACJ"}
1
+ {"version":3,"file":"codex-app-client.js","sourceRoot":"","sources":["../../../src/agent/codex-app-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ const PROTOCOL_REJECTION_RE = /unknown (type|message|command)|invalid state|not (running|ready)|unsupported (message|type|command)|unexpected message/i;
2
+ export function classifySecondPromptOutcome(input) {
3
+ if (!input.firstPromptSucceeded)
4
+ return 'inconclusive';
5
+ if (input.selfExited)
6
+ return 'proven-unsupported';
7
+ // 모델 비결정성 강건 (2026-08-02 실probe): 두 번째 턴 답변이 reasoning 채널로만 나가
8
+ // text 파트가 빈 경우가 있다. 프로토콜 사실을 증거로 — (a) id 상관 success 수락,
9
+ // (b) 이후 done이며 user echo 또는 assistant text가 SECOND 포함.
10
+ const secondAccepted = input.records.some((record) => record.id === input.secondPromptId && record.type === 'response' && record.command === 'prompt' && record.success === true);
11
+ const secondCompleted = input.records.some((record) => record.done && ((typeof record.text === 'string' && record.text.includes('SECOND'))
12
+ || (typeof record.userEcho === 'string' && record.userEcho.includes('SECOND'))));
13
+ if (secondAccepted && secondCompleted) {
14
+ return 'supported';
15
+ }
16
+ const correlatedError = input.records.find((record) => record.id === input.secondPromptId && record.error);
17
+ if (correlatedError && PROTOCOL_REJECTION_RE.test(correlatedError.error?.message || '')) {
18
+ return 'proven-unsupported';
19
+ }
20
+ return 'inconclusive';
21
+ }
22
+ //# sourceMappingURL=pi-rpc-verdict.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi-rpc-verdict.js","sourceRoot":"","sources":["../../../src/agent/pi-rpc-verdict.ts"],"names":[],"mappings":"AAaA,MAAM,qBAAqB,GAAG,yHAAyH,CAAC;AAExJ,MAAM,UAAU,2BAA2B,CAAC,KAM3C;IACG,IAAI,CAAC,KAAK,CAAC,oBAAoB;QAAE,OAAO,cAAc,CAAC;IACvD,IAAI,KAAK,CAAC,UAAU;QAAE,OAAO,oBAAoB,CAAC;IAClD,+DAA+D;IAC/D,0DAA0D;IAC1D,wDAAwD;IACxD,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CACjD,MAAM,CAAC,EAAE,KAAK,KAAK,CAAC,cAAc,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,IAAI,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;IAChI,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAClD,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;WAC5E,CAAC,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACzF,IAAI,cAAc,IAAI,eAAe,EAAE,CAAC;QACpC,OAAO,WAAW,CAAC;IACvB,CAAC;IACD,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,KAAK,CAAC,cAAc,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3G,IAAI,eAAe,IAAI,qBAAqB,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;QACtF,OAAO,oBAAoB,CAAC;IAChC,CAAC;IACD,OAAO,cAAc,CAAC;AAC1B,CAAC"}
@@ -3,8 +3,12 @@ import { join } from 'node:path';
3
3
  import { spawn, spawnSync } from 'node:child_process';
4
4
  import { StringDecoder } from 'node:string_decoder';
5
5
  import { JAW_HOME } from '../core/config.js';
6
+ import { probeOpenCodexEndpointModels } from '../cli/opencodex-models.js';
6
7
  const PI_PACKAGE = '@earendil-works/pi-coding-agent';
7
8
  const LOCAL_HOST_RE = /^(localhost|127\.0\.0\.1|\[?::1\]?)$/i;
9
+ const PI_RPC_CAPABILITY_SCHEMA = 1;
10
+ const PI_RPC_CAPABILITY_MAX_AGE_MS = 30 * 24 * 60 * 60_000;
11
+ const PI_RPC_ABORT_TIMEOUT_MS = 15_000;
8
12
  export const DEFAULT_PI_PROFILE = {
9
13
  id: 'progrok',
10
14
  label: 'Progrok',
@@ -194,6 +198,35 @@ export function resolvePiCommand(env = process.env) {
194
198
  source: 'npm-exec',
195
199
  };
196
200
  }
201
+ function resolvePiCommandIdentity(command, env = process.env) {
202
+ const result = spawnSync(command.command, [...command.baseArgs, '--version'], {
203
+ encoding: 'utf8',
204
+ env,
205
+ timeout: 15_000,
206
+ });
207
+ const version = `${result.stdout || ''}\n${result.stderr || ''}`.trim() || `exit:${String(result.status)}`;
208
+ return JSON.stringify({ source: command.source, command: command.command, baseArgs: command.baseArgs, version });
209
+ }
210
+ function loadPiAbortEffective(profileId, command) {
211
+ try {
212
+ const raw = JSON.parse(fs.readFileSync(join(JAW_HOME, 'pi', 'rpc-capabilities.json'), 'utf8'));
213
+ if (!raw || typeof raw !== 'object' || Array.isArray(raw))
214
+ return false;
215
+ const capability = raw;
216
+ if (capability['schemaVersion'] !== PI_RPC_CAPABILITY_SCHEMA
217
+ || capability['abortEffective'] !== true
218
+ || capability['profileId'] !== profileId
219
+ || capability['commandId'] !== resolvePiCommandIdentity(command))
220
+ return false;
221
+ const probedAt = Date.parse(typeof capability['probedAt'] === 'string' ? capability['probedAt'] : '');
222
+ return Number.isFinite(probedAt)
223
+ && probedAt <= Date.now()
224
+ && Date.now() - probedAt <= PI_RPC_CAPABILITY_MAX_AGE_MS;
225
+ }
226
+ catch {
227
+ return false;
228
+ }
229
+ }
197
230
  export function parsePiModelList(output, profileId) {
198
231
  const models = new Set();
199
232
  for (const rawLine of output.split(/\r?\n/)) {
@@ -211,10 +244,12 @@ export function parsePiModelList(output, profileId) {
211
244
  export function listPiModels(piInput, profileId, options = {}) {
212
245
  const dir = ensurePiRuntimeConfig(piInput, profileId, options.effort || '', options.root);
213
246
  const cmd = resolvePiCommand();
247
+ const isCmdShim = process.platform === 'win32' && !cmd.command.toLowerCase().endsWith('.exe');
214
248
  return new Promise((resolve, reject) => {
215
249
  const child = spawn(cmd.command, [...cmd.baseArgs, '--offline', '--list-models', profileId], {
216
250
  env: { ...process.env, PI_CODING_AGENT_DIR: dir },
217
251
  stdio: ['ignore', 'pipe', 'pipe'],
252
+ ...(isCmdShim ? { shell: true } : {}),
218
253
  });
219
254
  let stdout = '';
220
255
  let stderr = '';
@@ -239,6 +274,13 @@ export function listPiModels(piInput, profileId, options = {}) {
239
274
  });
240
275
  });
241
276
  }
277
+ export async function discoverPiProfileModels(piInput, profile, options = {}) {
278
+ const openCodexModels = await probeOpenCodexEndpointModels(profile.endpoint, options.timeoutMs ?? 1500);
279
+ if (openCodexModels)
280
+ return { models: openCodexModels, source: 'opencodex' };
281
+ const models = await listPiModels(piInput, profile.id, options);
282
+ return { models, source: 'pi-offline' };
283
+ }
242
284
  function extractTextOnly(value) {
243
285
  if (typeof value === 'string')
244
286
  return value;
@@ -330,6 +372,202 @@ function extractPiSessionId(obj) {
330
372
  || ((obj['data'] && typeof obj['data'] === 'object') ? obj['data']['sessionId'] : '')
331
373
  || ((obj['result'] && typeof obj['result'] === 'object') ? obj['result']['sessionId'] : ''));
332
374
  }
375
+ export function spawnPersistentPiRpc(profile, pi, options) {
376
+ const dir = ensurePiRuntimeConfig(pi, profile.id, options.effort || '', options.root);
377
+ const cmd = resolvePiCommand();
378
+ const args = [
379
+ ...cmd.baseArgs,
380
+ '--mode', 'rpc',
381
+ '--no-context-files',
382
+ '--tools', 'read,bash,edit,write,grep,find,ls',
383
+ '--provider', profile.id,
384
+ '--model', options.model || profile.model,
385
+ '--api-key', profile.apiKey || 'dummy',
386
+ ...(options.sessionId ? ['--session-id', options.sessionId] : []),
387
+ ];
388
+ const isCmdShim = process.platform === 'win32' && !cmd.command.toLowerCase().endsWith('.exe');
389
+ const child = spawn(cmd.command, args, {
390
+ cwd: options.cwd,
391
+ env: { ...process.env, PI_CODING_AGENT_DIR: dir },
392
+ stdio: ['pipe', 'pipe', 'pipe'],
393
+ ...(isCmdShim ? { shell: true } : {}),
394
+ });
395
+ const decoder = new StringDecoder('utf8');
396
+ let buffer = '';
397
+ let stderr = '';
398
+ let seq = 1;
399
+ let activePrompt = null;
400
+ let abortWait = null;
401
+ let closed = false;
402
+ const write = (type, fields = {}) => {
403
+ if (!session.alive || !child.stdin.writable)
404
+ throw new Error('pi rpc session is not writable');
405
+ const id = seq++;
406
+ child.stdin.write(`${JSON.stringify({ id, type, ...fields })}\n`);
407
+ return id;
408
+ };
409
+ const settleAbort = () => {
410
+ if (!abortWait || !abortWait.accepted || !abortWait.terminal)
411
+ return;
412
+ const wait = abortWait;
413
+ abortWait = null;
414
+ clearTimeout(wait.timer);
415
+ wait.resolve();
416
+ };
417
+ const dispatchLine = (line) => {
418
+ let raw;
419
+ try {
420
+ raw = JSON.parse(line);
421
+ }
422
+ catch {
423
+ console.warn(`[jaw:pi] JSON parse failed: ${line.slice(0, 200)}`);
424
+ return;
425
+ }
426
+ if (!raw || typeof raw !== 'object' || Array.isArray(raw))
427
+ return;
428
+ const record = raw;
429
+ if (abortWait && record['id'] === abortWait.id && record['type'] === 'response' && record['command'] === 'abort') {
430
+ if (record['success'] === true)
431
+ abortWait.accepted = true;
432
+ else {
433
+ const wait = abortWait;
434
+ abortWait = null;
435
+ clearTimeout(wait.timer);
436
+ const error = record['error'] && typeof record['error'] === 'object'
437
+ ? trimString(record['error']['message'])
438
+ : '';
439
+ wait.reject(new Error(error || 'pi rpc abort rejected'));
440
+ }
441
+ }
442
+ const event = parsePiRpcRecord(record);
443
+ const state = record['data'] && typeof record['data'] === 'object'
444
+ ? record['data']
445
+ : null;
446
+ const stateName = state && typeof state['state'] === 'string' ? state['state'].toLowerCase() : '';
447
+ const nonRunning = Boolean(state) && (state?.['running'] === false
448
+ || state?.['isRunning'] === false
449
+ || (stateName !== '' && !['running', 'active', 'generating'].includes(stateName)));
450
+ if (event.sessionId) {
451
+ session.sessionId = event.sessionId;
452
+ activePrompt?.onEvent?.({ kind: 'session', sessionId: event.sessionId });
453
+ }
454
+ if (event.tool)
455
+ activePrompt?.onEvent?.({ kind: 'tool', ...event.tool });
456
+ if (event.thinking)
457
+ activePrompt?.onEvent?.({ kind: 'thinking', text: event.thinking });
458
+ if (event.text && activePrompt && !(event.done && activePrompt.text)) {
459
+ activePrompt.text += event.text;
460
+ activePrompt.onEvent?.({ kind: 'text', text: event.text });
461
+ }
462
+ if (event.done || (abortWait && nonRunning)) {
463
+ if (activePrompt) {
464
+ const prompt = activePrompt;
465
+ activePrompt = null;
466
+ prompt.resolve({ text: prompt.text, stderr: stderr.slice(prompt.stderrStart) });
467
+ }
468
+ if (abortWait)
469
+ abortWait.terminal = true;
470
+ }
471
+ settleAbort();
472
+ };
473
+ const rejectOutstanding = (error) => {
474
+ if (activePrompt) {
475
+ const prompt = activePrompt;
476
+ activePrompt = null;
477
+ prompt.reject(error);
478
+ }
479
+ if (abortWait) {
480
+ const wait = abortWait;
481
+ abortWait = null;
482
+ clearTimeout(wait.timer);
483
+ wait.reject(error);
484
+ }
485
+ };
486
+ const session = {
487
+ child,
488
+ get alive() { return !closed && child.exitCode == null && !child.killed; },
489
+ abortEffective: loadPiAbortEffective(profile.id, cmd),
490
+ sessionId: options.sessionId || null,
491
+ sendPrompt(message, opts = {}) {
492
+ if (activePrompt)
493
+ return Promise.reject(new Error('pi rpc prompt already active'));
494
+ if (!session.alive)
495
+ return Promise.reject(new Error('pi rpc session is not alive'));
496
+ return new Promise((resolve, reject) => {
497
+ activePrompt = { text: '', stderrStart: stderr.length, onEvent: opts.onEvent, resolve, reject };
498
+ try {
499
+ if (opts.effort)
500
+ write('set_thinking_level', { level: opts.effort });
501
+ write('prompt', { message });
502
+ }
503
+ catch (error) {
504
+ activePrompt = null;
505
+ reject(error);
506
+ }
507
+ });
508
+ },
509
+ abort() {
510
+ if (!activePrompt)
511
+ return Promise.resolve();
512
+ if (abortWait)
513
+ return Promise.reject(new Error('pi rpc abort already active'));
514
+ return new Promise((resolve, reject) => {
515
+ let id;
516
+ try {
517
+ id = write('abort');
518
+ }
519
+ catch (error) {
520
+ reject(error);
521
+ return;
522
+ }
523
+ const timer = setTimeout(() => {
524
+ if (!abortWait || abortWait.id !== id)
525
+ return;
526
+ abortWait = null;
527
+ reject(new Error('pi rpc abort timed out'));
528
+ }, PI_RPC_ABORT_TIMEOUT_MS);
529
+ abortWait = { id, accepted: false, terminal: false, resolve, reject, timer };
530
+ });
531
+ },
532
+ close() {
533
+ if (closed)
534
+ return;
535
+ try {
536
+ child.stdin.end();
537
+ }
538
+ catch { /* already closed */ }
539
+ setTimeout(() => {
540
+ if (child.exitCode == null && !child.killed)
541
+ child.kill('SIGTERM');
542
+ }, 750).unref();
543
+ },
544
+ kill() {
545
+ if (child.exitCode == null && !child.killed)
546
+ child.kill('SIGTERM');
547
+ },
548
+ };
549
+ child.stdout?.on('data', (chunk) => {
550
+ buffer += decoder.write(chunk);
551
+ const lines = buffer.split('\n');
552
+ buffer = lines.pop() ?? '';
553
+ for (const line of lines)
554
+ if (line.trim())
555
+ dispatchLine(line.trim());
556
+ });
557
+ child.stderr?.on('data', (chunk) => { stderr += chunk.toString(); });
558
+ child.on('error', (error) => rejectOutstanding(error));
559
+ child.on('close', (code) => {
560
+ closed = true;
561
+ buffer += decoder.end();
562
+ if (buffer.trim())
563
+ dispatchLine(buffer.trim());
564
+ rejectOutstanding(new Error(`pi rpc session exited with code ${String(code)}`));
565
+ });
566
+ write('get_state');
567
+ if (options.effort)
568
+ write('set_thinking_level', { level: options.effort });
569
+ return session;
570
+ }
333
571
  export function spawnPiRpc(profile, pi, options) {
334
572
  const dir = ensurePiRuntimeConfig(pi, profile.id, options.effort || '', options.root);
335
573
  const cmd = resolvePiCommand();
@@ -343,10 +581,12 @@ export function spawnPiRpc(profile, pi, options) {
343
581
  '--api-key', profile.apiKey || 'dummy',
344
582
  ...(options.sessionId ? ['--session-id', options.sessionId] : []),
345
583
  ];
584
+ const isCmdShim = process.platform === 'win32' && !cmd.command.toLowerCase().endsWith('.exe');
346
585
  const child = spawn(cmd.command, args, {
347
586
  cwd: options.cwd,
348
587
  env: { ...process.env, PI_CODING_AGENT_DIR: dir },
349
588
  stdio: ['pipe', 'pipe', 'pipe'],
589
+ ...(isCmdShim ? { shell: true } : {}),
350
590
  });
351
591
  const decoder = new StringDecoder('utf8');
352
592
  let buffer = '';