@pasko70/pibo 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (426) hide show
  1. package/README.md +106 -254
  2. package/context/codex-base-prompt.md +4 -0
  3. package/context/compute-worker.md +23 -0
  4. package/context/pibo-native-tooling.md +18 -0
  5. package/context/pibo-system-prompt.md +69 -8
  6. package/dist/api/simple-agent-api.js +136 -0
  7. package/dist/app-context.js +4 -0
  8. package/dist/apps/chat/agent-profiles.js +18 -3
  9. package/dist/apps/chat/agent-store.js +113 -16
  10. package/dist/apps/chat/chat-api-routes.js +311 -0
  11. package/dist/apps/chat/chat-capability-routes.js +90 -0
  12. package/dist/apps/chat/chat-files.js +178 -0
  13. package/dist/apps/chat/chat-request-normalizers.js +681 -0
  14. package/dist/apps/chat/chat-settings-routes.js +75 -0
  15. package/dist/apps/chat/chat-trace-helpers.js +94 -0
  16. package/dist/apps/chat/chat-user-skill-routes.js +149 -0
  17. package/dist/apps/chat/cron-api.js +213 -0
  18. package/dist/apps/chat/data/chat-data-mappers.js +74 -0
  19. package/dist/apps/chat/data/event-command-service.js +75 -0
  20. package/dist/apps/chat/data/navigation-query-service.js +11 -0
  21. package/dist/apps/chat/data/project-service.js +844 -0
  22. package/dist/apps/chat/data/read-state-service.js +42 -0
  23. package/dist/apps/chat/data/room-service.js +52 -0
  24. package/dist/apps/chat/data/session-query-service.js +63 -0
  25. package/dist/apps/chat/data/timeline-query-service.js +96 -0
  26. package/dist/apps/chat/event-log.js +1 -307
  27. package/dist/apps/chat/model-catalog.js +7 -2
  28. package/dist/apps/chat/output-compactor.js +126 -0
  29. package/dist/apps/chat/output-event-policy.js +17 -0
  30. package/dist/apps/chat/project-workflow-human-actions.js +347 -0
  31. package/dist/apps/chat/project-workflow-sessions.js +260 -0
  32. package/dist/apps/chat/provider-auth-actions.js +43 -0
  33. package/dist/apps/chat/ralph-api.js +156 -0
  34. package/dist/apps/chat/read-model.js +1 -218
  35. package/dist/apps/chat/rooms.js +1 -321
  36. package/dist/apps/chat/static-assets.js +996 -0
  37. package/dist/apps/chat/stream.js +29 -6
  38. package/dist/apps/chat/trace.js +179 -1003
  39. package/dist/apps/chat/types/event-store.js +1 -0
  40. package/dist/apps/chat/types/read-model.js +1 -0
  41. package/dist/apps/chat/types/rooms.js +36 -0
  42. package/dist/apps/chat/web-app.js +3131 -1959
  43. package/dist/apps/chat/workflow-catalog.js +572 -0
  44. package/dist/apps/chat/workflow-edge-compatibility.js +51 -0
  45. package/dist/apps/chat/workflow-json-schema-validation.js +335 -0
  46. package/dist/apps/chat/workflow-persistence-model.js +140 -0
  47. package/dist/apps/chat/workflow-persistence.js +633 -0
  48. package/dist/apps/chat/workflow-registered-ref-params.js +130 -0
  49. package/dist/apps/chat/workflow-registered-ref-pickers.js +179 -0
  50. package/dist/apps/chat/workflow-registered-ref-validation.js +210 -0
  51. package/dist/apps/chat/workflow-v2-security-validation.js +93 -0
  52. package/dist/apps/chat/workflow-validation-helpers.js +114 -0
  53. package/dist/apps/chat-ui/assets/{dist-CNLWH2qh.js → dist-B4lw9z4F.js} +1 -1
  54. package/dist/apps/chat-ui/assets/{dist-8e4L8ciw.js → dist-BbTaHWON.js} +1 -1
  55. package/dist/apps/chat-ui/assets/{dist-CMZOa5ik.js → dist-BcT_c1EJ.js} +1 -1
  56. package/dist/apps/chat-ui/assets/{dist-DNcnQRPF.js → dist-CGINd7XU.js} +1 -1
  57. package/dist/apps/chat-ui/assets/{dist-CqqUC8Ce.js → dist-CrBzZkUp.js} +1 -1
  58. package/dist/apps/chat-ui/assets/{dist-D2N4-LIc.js → dist-CyyISotB.js} +1 -1
  59. package/dist/apps/chat-ui/assets/{dist-CUqpST5w.js → dist-DFbnFNpX.js} +1 -1
  60. package/dist/apps/chat-ui/assets/{dist-CspjOeBj.js → dist-DGLWQLX8.js} +1 -1
  61. package/dist/apps/chat-ui/assets/{dist-B7bbI3Qz.js → dist-DfcIkFSN.js} +1 -1
  62. package/dist/apps/chat-ui/assets/{dist-v4pjHlB7.js → dist-sKDHTwaT.js} +1 -1
  63. package/dist/apps/chat-ui/assets/{dist-D9L4MSRF.js → dist-y9D6la48.js} +1 -1
  64. package/dist/apps/chat-ui/assets/index-C25VYnyb.css +1 -0
  65. package/dist/apps/chat-ui/assets/index-CUkuvI3v.js +165 -0
  66. package/dist/apps/chat-ui/assets/pwa-images/android/launchericon-144x144.png +0 -0
  67. package/dist/apps/chat-ui/assets/pwa-images/android/launchericon-192x192.png +0 -0
  68. package/dist/apps/chat-ui/assets/pwa-images/android/launchericon-48x48.png +0 -0
  69. package/dist/apps/chat-ui/assets/pwa-images/android/launchericon-512x512.png +0 -0
  70. package/dist/apps/chat-ui/assets/pwa-images/android/launchericon-72x72.png +0 -0
  71. package/dist/apps/chat-ui/assets/pwa-images/android/launchericon-96x96.png +0 -0
  72. package/dist/apps/chat-ui/assets/pwa-images/ios/100.png +0 -0
  73. package/dist/apps/chat-ui/assets/pwa-images/ios/1024.png +0 -0
  74. package/dist/apps/chat-ui/assets/pwa-images/ios/114.png +0 -0
  75. package/dist/apps/chat-ui/assets/pwa-images/ios/120.png +0 -0
  76. package/dist/apps/chat-ui/assets/pwa-images/ios/128.png +0 -0
  77. package/dist/apps/chat-ui/assets/pwa-images/ios/144.png +0 -0
  78. package/dist/apps/chat-ui/assets/pwa-images/ios/152.png +0 -0
  79. package/dist/apps/chat-ui/assets/pwa-images/ios/16.png +0 -0
  80. package/dist/apps/chat-ui/assets/pwa-images/ios/167.png +0 -0
  81. package/dist/apps/chat-ui/assets/pwa-images/ios/180.png +0 -0
  82. package/dist/apps/chat-ui/assets/pwa-images/ios/192.png +0 -0
  83. package/dist/apps/chat-ui/assets/pwa-images/ios/20.png +0 -0
  84. package/dist/apps/chat-ui/assets/pwa-images/ios/256.png +0 -0
  85. package/dist/apps/chat-ui/assets/pwa-images/ios/29.png +0 -0
  86. package/dist/apps/chat-ui/assets/pwa-images/ios/32.png +0 -0
  87. package/dist/apps/chat-ui/assets/pwa-images/ios/40.png +0 -0
  88. package/dist/apps/chat-ui/assets/pwa-images/ios/50.png +0 -0
  89. package/dist/apps/chat-ui/assets/pwa-images/ios/512.png +0 -0
  90. package/dist/apps/chat-ui/assets/pwa-images/ios/57.png +0 -0
  91. package/dist/apps/chat-ui/assets/pwa-images/ios/58.png +0 -0
  92. package/dist/apps/chat-ui/assets/pwa-images/ios/60.png +0 -0
  93. package/dist/apps/chat-ui/assets/pwa-images/ios/64.png +0 -0
  94. package/dist/apps/chat-ui/assets/pwa-images/ios/72.png +0 -0
  95. package/dist/apps/chat-ui/assets/pwa-images/ios/76.png +0 -0
  96. package/dist/apps/chat-ui/assets/pwa-images/ios/80.png +0 -0
  97. package/dist/apps/chat-ui/assets/pwa-images/ios/87.png +0 -0
  98. package/dist/apps/chat-ui/assets/pwa-images/windows/LargeTile.scale-100.png +0 -0
  99. package/dist/apps/chat-ui/assets/pwa-images/windows/LargeTile.scale-125.png +0 -0
  100. package/dist/apps/chat-ui/assets/pwa-images/windows/LargeTile.scale-150.png +0 -0
  101. package/dist/apps/chat-ui/assets/pwa-images/windows/LargeTile.scale-200.png +0 -0
  102. package/dist/apps/chat-ui/assets/pwa-images/windows/LargeTile.scale-400.png +0 -0
  103. package/dist/apps/chat-ui/assets/pwa-images/windows/SmallTile.scale-100.png +0 -0
  104. package/dist/apps/chat-ui/assets/pwa-images/windows/SmallTile.scale-125.png +0 -0
  105. package/dist/apps/chat-ui/assets/pwa-images/windows/SmallTile.scale-150.png +0 -0
  106. package/dist/apps/chat-ui/assets/pwa-images/windows/SmallTile.scale-200.png +0 -0
  107. package/dist/apps/chat-ui/assets/pwa-images/windows/SmallTile.scale-400.png +0 -0
  108. package/dist/apps/chat-ui/assets/pwa-images/windows/SplashScreen.scale-100.png +0 -0
  109. package/dist/apps/chat-ui/assets/pwa-images/windows/SplashScreen.scale-125.png +0 -0
  110. package/dist/apps/chat-ui/assets/pwa-images/windows/SplashScreen.scale-150.png +0 -0
  111. package/dist/apps/chat-ui/assets/pwa-images/windows/SplashScreen.scale-200.png +0 -0
  112. package/dist/apps/chat-ui/assets/pwa-images/windows/SplashScreen.scale-400.png +0 -0
  113. package/dist/apps/chat-ui/assets/pwa-images/windows/Square150x150Logo.scale-100.png +0 -0
  114. package/dist/apps/chat-ui/assets/pwa-images/windows/Square150x150Logo.scale-125.png +0 -0
  115. package/dist/apps/chat-ui/assets/pwa-images/windows/Square150x150Logo.scale-150.png +0 -0
  116. package/dist/apps/chat-ui/assets/pwa-images/windows/Square150x150Logo.scale-200.png +0 -0
  117. package/dist/apps/chat-ui/assets/pwa-images/windows/Square150x150Logo.scale-400.png +0 -0
  118. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-lightunplated_targetsize-16.png +0 -0
  119. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-lightunplated_targetsize-20.png +0 -0
  120. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-lightunplated_targetsize-24.png +0 -0
  121. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-lightunplated_targetsize-256.png +0 -0
  122. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-lightunplated_targetsize-30.png +0 -0
  123. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-lightunplated_targetsize-32.png +0 -0
  124. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-lightunplated_targetsize-36.png +0 -0
  125. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-lightunplated_targetsize-40.png +0 -0
  126. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-lightunplated_targetsize-44.png +0 -0
  127. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-lightunplated_targetsize-48.png +0 -0
  128. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-lightunplated_targetsize-60.png +0 -0
  129. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-lightunplated_targetsize-64.png +0 -0
  130. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-lightunplated_targetsize-72.png +0 -0
  131. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-lightunplated_targetsize-80.png +0 -0
  132. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-lightunplated_targetsize-96.png +0 -0
  133. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-unplated_targetsize-16.png +0 -0
  134. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-unplated_targetsize-20.png +0 -0
  135. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-unplated_targetsize-24.png +0 -0
  136. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-unplated_targetsize-256.png +0 -0
  137. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-unplated_targetsize-30.png +0 -0
  138. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-unplated_targetsize-32.png +0 -0
  139. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-unplated_targetsize-36.png +0 -0
  140. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-unplated_targetsize-40.png +0 -0
  141. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-unplated_targetsize-44.png +0 -0
  142. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-unplated_targetsize-48.png +0 -0
  143. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-unplated_targetsize-60.png +0 -0
  144. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-unplated_targetsize-64.png +0 -0
  145. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-unplated_targetsize-72.png +0 -0
  146. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-unplated_targetsize-80.png +0 -0
  147. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-unplated_targetsize-96.png +0 -0
  148. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.scale-100.png +0 -0
  149. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.scale-125.png +0 -0
  150. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.scale-150.png +0 -0
  151. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.scale-200.png +0 -0
  152. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.scale-400.png +0 -0
  153. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.targetsize-16.png +0 -0
  154. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.targetsize-20.png +0 -0
  155. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.targetsize-24.png +0 -0
  156. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.targetsize-256.png +0 -0
  157. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.targetsize-30.png +0 -0
  158. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.targetsize-32.png +0 -0
  159. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.targetsize-36.png +0 -0
  160. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.targetsize-40.png +0 -0
  161. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.targetsize-44.png +0 -0
  162. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.targetsize-48.png +0 -0
  163. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.targetsize-60.png +0 -0
  164. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.targetsize-64.png +0 -0
  165. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.targetsize-72.png +0 -0
  166. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.targetsize-80.png +0 -0
  167. package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.targetsize-96.png +0 -0
  168. package/dist/apps/chat-ui/assets/pwa-images/windows/StoreLogo.scale-100.png +0 -0
  169. package/dist/apps/chat-ui/assets/pwa-images/windows/StoreLogo.scale-125.png +0 -0
  170. package/dist/apps/chat-ui/assets/pwa-images/windows/StoreLogo.scale-150.png +0 -0
  171. package/dist/apps/chat-ui/assets/pwa-images/windows/StoreLogo.scale-200.png +0 -0
  172. package/dist/apps/chat-ui/assets/pwa-images/windows/StoreLogo.scale-400.png +0 -0
  173. package/dist/apps/chat-ui/assets/pwa-images/windows/Wide310x150Logo.scale-100.png +0 -0
  174. package/dist/apps/chat-ui/assets/pwa-images/windows/Wide310x150Logo.scale-125.png +0 -0
  175. package/dist/apps/chat-ui/assets/pwa-images/windows/Wide310x150Logo.scale-150.png +0 -0
  176. package/dist/apps/chat-ui/assets/pwa-images/windows/Wide310x150Logo.scale-200.png +0 -0
  177. package/dist/apps/chat-ui/assets/pwa-images/windows/Wide310x150Logo.scale-400.png +0 -0
  178. package/dist/apps/chat-ui/index.html +8 -3
  179. package/dist/apps/chat-ui/manifest.webmanifest +25 -0
  180. package/dist/apps/chat-ui/sw.js +41 -0
  181. package/dist/apps/cli-ui/InkSessionApp.js +1218 -0
  182. package/dist/apps/cli-ui/InkTerminalLine.js +53 -0
  183. package/dist/apps/cli-ui/InkTerminalRow.js +304 -0
  184. package/dist/apps/cli-ui/InkTerminalView.js +25 -0
  185. package/dist/apps/cli-ui/cliSessionsCommand.js +232 -0
  186. package/dist/apps/cli-ui/index.js +8 -0
  187. package/dist/apps/cli-ui/inkColors.js +67 -0
  188. package/dist/apps/cli-ui/inkJson.js +244 -0
  189. package/dist/apps/cli-ui/inkMarkdown.js +122 -0
  190. package/dist/apps/context-files-ui/assets/{dist-DFi2YGux.js → dist-BOiGdrG-.js} +1 -1
  191. package/dist/apps/context-files-ui/assets/{dist-DyfSeBMu.js → dist-DK01b7x4.js} +1 -1
  192. package/dist/apps/context-files-ui/assets/{dist-CwbH_3RN.js → dist-DPG9jOQ-.js} +1 -1
  193. package/dist/apps/context-files-ui/assets/{dist-dTBsFYAl.js → dist-Dp5AH00p.js} +1 -1
  194. package/dist/apps/context-files-ui/assets/{dist-CxRLRmMx.js → dist-DqYw0LH7.js} +1 -1
  195. package/dist/apps/context-files-ui/assets/{dist-MyZgX9K2.js → dist-TF5iO5ML.js} +1 -1
  196. package/dist/apps/context-files-ui/assets/{dist-DQXzt2Ng.js → dist-TbjAhles.js} +1 -1
  197. package/dist/apps/context-files-ui/assets/{dist-YwR9dpb-.js → dist-ZsBbt0uY.js} +1 -1
  198. package/dist/apps/context-files-ui/assets/{dist-CKQF1zEu.js → dist-kmsvtHkH.js} +1 -1
  199. package/dist/apps/context-files-ui/assets/{dist-BJW3917N.js → dist-vnd7PMu3.js} +1 -1
  200. package/dist/apps/context-files-ui/assets/{index-BwRDoHMC.css → index-B92tL3Pp.css} +1 -1
  201. package/dist/apps/context-files-ui/assets/{index-GwvjXytt.js → index-BhAWD3dv.js} +2 -2
  202. package/dist/apps/context-files-ui/index.html +2 -2
  203. package/dist/auth/better-auth.js +2 -1
  204. package/dist/auth/login-actions.js +251 -0
  205. package/dist/auth/openai-codex-usage.js +147 -0
  206. package/dist/bin/pibo.js +0 -0
  207. package/dist/bin/rg.js +15 -0
  208. package/dist/cli-session/fakeSessionSource.js +804 -0
  209. package/dist/cli-session/index.js +3 -0
  210. package/dist/cli-session/localSessionSource.js +1144 -0
  211. package/dist/cli-session/sessionSource.js +13 -0
  212. package/dist/cli.js +142 -14
  213. package/dist/compute/cli.js +415 -0
  214. package/dist/compute/docker.js +827 -0
  215. package/dist/compute/resource-health.js +333 -0
  216. package/dist/compute/resource-policy.js +98 -0
  217. package/dist/config/config.js +9 -5
  218. package/dist/core/context-build.js +677 -0
  219. package/dist/core/model-defaults.js +51 -9
  220. package/dist/core/pibo-home.js +8 -0
  221. package/dist/core/profiles.js +48 -0
  222. package/dist/core/provider-telemetry.js +222 -0
  223. package/dist/core/routed-session.js +441 -47
  224. package/dist/core/runtime-telemetry.js +853 -0
  225. package/dist/core/runtime.js +103 -15
  226. package/dist/core/session-errors.js +47 -0
  227. package/dist/core/session-model.js +39 -0
  228. package/dist/core/session-router.js +292 -62
  229. package/dist/core/shared-app.js +17 -0
  230. package/dist/core/skill-expansion.js +43 -0
  231. package/dist/core/system-prompt-template.js +9 -9
  232. package/dist/core/telemetry-staleness.js +128 -0
  233. package/dist/core/test-output-compaction.js +145 -0
  234. package/dist/core/user-settings.js +73 -0
  235. package/dist/cron/channel.js +28 -0
  236. package/dist/cron/cli.js +230 -0
  237. package/dist/cron/plugin.js +11 -0
  238. package/dist/cron/schedule.js +214 -0
  239. package/dist/cron/service.js +177 -0
  240. package/dist/cron/store.js +349 -0
  241. package/dist/cron/types.js +1 -0
  242. package/dist/data/cli.js +184 -0
  243. package/dist/data/event-log.js +106 -0
  244. package/dist/data/final-app-space-cutover-migration.js +728 -0
  245. package/dist/data/ingest-service.js +389 -0
  246. package/dist/data/message-store.js +62 -0
  247. package/dist/data/navigation-store.js +75 -0
  248. package/dist/data/observation-store.js +46 -0
  249. package/dist/data/payload-store.js +144 -0
  250. package/dist/data/pibo-store.js +59 -0
  251. package/dist/data/schema.js +434 -0
  252. package/dist/data/session-store.js +63 -0
  253. package/dist/data/shared-app-migration.js +757 -0
  254. package/dist/data/sqlite-schema.js +12 -0
  255. package/dist/data/telemetry-preview.js +65 -0
  256. package/dist/data/telemetry-queries.js +212 -0
  257. package/dist/data/telemetry-retention.js +50 -0
  258. package/dist/data/telemetry-rows.js +158 -0
  259. package/dist/data/telemetry.js +357 -0
  260. package/dist/debug/delta-compaction.js +99 -0
  261. package/dist/debug/detail-format.js +86 -0
  262. package/dist/debug/events.js +149 -29
  263. package/dist/debug/failures.js +162 -0
  264. package/dist/debug/index.js +655 -30
  265. package/dist/debug/messages.js +185 -0
  266. package/dist/debug/next-commands.js +6 -0
  267. package/dist/debug/payloads.js +123 -0
  268. package/dist/debug/pty.js +924 -0
  269. package/dist/debug/session.js +45 -15
  270. package/dist/debug/sql.js +1 -1
  271. package/dist/debug/stores.js +18 -13
  272. package/dist/debug/summary.js +72 -0
  273. package/dist/debug/telemetry.js +649 -0
  274. package/dist/debug/tools.js +168 -0
  275. package/dist/debug/trace-render-check.js +151 -0
  276. package/dist/debug/trace.js +152 -27
  277. package/dist/debug/web-artifacts.js +63 -0
  278. package/dist/debug/web-options.js +313 -0
  279. package/dist/debug/web-render-analysis.js +310 -0
  280. package/dist/debug/web-snapshot-browser-scripts.js +303 -0
  281. package/dist/debug/web-streaming-benchmark-analysis.js +605 -0
  282. package/dist/debug/web-streaming-browser-library.js +928 -0
  283. package/dist/debug/web-streaming-browser-scripts.js +242 -0
  284. package/dist/debug/web-streaming-provider-telemetry.js +194 -0
  285. package/dist/debug/web-streaming-report.js +493 -0
  286. package/dist/debug/web-streaming-types.js +1 -0
  287. package/dist/debug/web.js +574 -0
  288. package/dist/gateway/backup.js +83 -0
  289. package/dist/gateway/cli.js +511 -0
  290. package/dist/gateway/fallback.js +155 -0
  291. package/dist/gateway/pidfile.js +84 -0
  292. package/dist/gateway/protocol.js +16 -0
  293. package/dist/gateway/server.js +172 -17
  294. package/dist/gateway/tool.js +54 -51
  295. package/dist/gateway/web.js +74 -2
  296. package/dist/index.js +3 -1
  297. package/dist/local/client.js +3 -3
  298. package/dist/local/extension.js +8 -5
  299. package/dist/plugins/builtin.js +251 -49
  300. package/dist/plugins/chat-vscode-web.js +28 -0
  301. package/dist/plugins/codex-compat.js +0 -41
  302. package/dist/plugins/context-files.js +98 -18
  303. package/dist/plugins/dev-auth.js +124 -0
  304. package/dist/plugins/native-tooling.js +15 -0
  305. package/dist/plugins/registry.js +49 -1
  306. package/dist/plugins/web-annotations.js +27 -0
  307. package/dist/providers/minimax.js +70 -0
  308. package/dist/providers/openai-compat.js +48 -0
  309. package/dist/ralph/channel.js +8 -0
  310. package/dist/ralph/cli.js +152 -0
  311. package/dist/ralph/plugin.js +14 -0
  312. package/dist/ralph/service.js +271 -0
  313. package/dist/ralph/stopping.js +151 -0
  314. package/dist/ralph/store.js +450 -0
  315. package/dist/ralph/templates.js +200 -0
  316. package/dist/ralph/types.js +1 -0
  317. package/dist/reliability/store.js +42 -26
  318. package/dist/runs/registry.js +72 -35
  319. package/dist/session-ui/commandCatalog.js +193 -0
  320. package/dist/session-ui/commandResults.js +95 -0
  321. package/dist/session-ui/index.js +7 -0
  322. package/dist/session-ui/ownerViewModel.js +27 -0
  323. package/dist/session-ui/roomSessionViewModel.js +69 -0
  324. package/dist/session-ui/statusViewModel.js +127 -0
  325. package/dist/session-ui/terminalCards.js +210 -0
  326. package/dist/session-ui/terminalRows.js +937 -0
  327. package/dist/session-ui/terminalValue.js +45 -0
  328. package/dist/sessions/pibo-data-store.js +178 -0
  329. package/dist/sessions/sqlite-store.js +78 -12
  330. package/dist/sessions/store.js +11 -4
  331. package/dist/sessions/workflow-session-kind.js +20 -0
  332. package/dist/setup/cli.js +567 -0
  333. package/dist/shared/trace-async-agent-runs.js +127 -0
  334. package/dist/shared/trace-engine.js +96 -0
  335. package/dist/shared/trace-event-projection.js +679 -0
  336. package/dist/shared/trace-live-reducer.js +191 -0
  337. package/dist/shared/trace-nodes.js +76 -0
  338. package/dist/shared/trace-order.js +11 -10
  339. package/dist/shared/trace-patch-nodes.js +83 -0
  340. package/dist/shared/trace-run-notifications.js +69 -0
  341. package/dist/shared/trace-subagent-links.js +46 -0
  342. package/dist/shared/trace-transcript.js +303 -0
  343. package/dist/shared/trace-types.js +1 -0
  344. package/dist/shared-app.js +4 -0
  345. package/dist/signals/aggregate.js +65 -0
  346. package/dist/signals/events.js +1 -0
  347. package/dist/signals/projector.js +158 -0
  348. package/dist/signals/registry.js +513 -0
  349. package/dist/signals/store.js +1 -0
  350. package/dist/signals/types.js +1 -0
  351. package/dist/skills/cli.js +117 -0
  352. package/dist/tools/agent-browser-leases.js +219 -0
  353. package/dist/tools/agent-browser-wrapper.js +99 -0
  354. package/dist/tools/browser-pool.js +623 -0
  355. package/dist/tools/browser-use-cdp.js +56 -4
  356. package/dist/tools/browser-use-leases.js +215 -37
  357. package/dist/tools/browser-use-wrapper.js +508 -65
  358. package/dist/tools/cdp-client.js +189 -0
  359. package/dist/tools/guides.js +203 -4
  360. package/dist/tools/index.js +666 -16
  361. package/dist/tools/npm-runtime.js +136 -0
  362. package/dist/tools/registry.js +107 -8
  363. package/dist/tools/runtime/index.js +3 -0
  364. package/dist/tools/runtime/node-backend.js +225 -0
  365. package/dist/tools/runtime/node-worker-source.js +206 -0
  366. package/dist/tools/runtime/python-backend.js +227 -0
  367. package/dist/tools/runtime/python-worker-source.js +178 -0
  368. package/dist/tools/runtime/registry.js +255 -0
  369. package/dist/tools/runtime/tool.js +168 -0
  370. package/dist/tools/runtime/types.js +1 -0
  371. package/dist/tools/web-search.js +2 -1
  372. package/dist/user-skills/installer.js +39 -36
  373. package/dist/user-skills/store.js +50 -11
  374. package/dist/web/auth.js +5 -1
  375. package/dist/web/channel.js +86 -0
  376. package/dist/web/http.js +79 -14
  377. package/dist/web-annotations/api.js +348 -0
  378. package/dist/web-annotations/attachments.js +201 -0
  379. package/dist/web-annotations/cdp.js +1107 -0
  380. package/dist/web-annotations/index.js +7 -0
  381. package/dist/web-annotations/store.js +407 -0
  382. package/dist/web-annotations/tools.js +350 -0
  383. package/dist/web-annotations/types.js +34 -0
  384. package/dist/web-annotations/validation.js +288 -0
  385. package/docs/README.md +23 -0
  386. package/docs/ops/install-developer-host.md +112 -0
  387. package/docs/ops/install-user-host.md +76 -0
  388. package/docs/ops/upgrade-user-to-developer-host.md +69 -0
  389. package/package.json +24 -10
  390. package/skills/builtin/pi-agent-harness/SKILL.md +24 -24
  391. package/skills/builtin/pibo-docker-system/SKILL.md +170 -0
  392. package/skills/builtin/pibo-spec-writing/SKILL.md +330 -0
  393. package/skills/builtin/prd/SKILL.md +143 -0
  394. package/skills/builtin/ralph-loop/SKILL.md +359 -0
  395. package/skills/builtin/ralph-prd-json/SKILL.md +123 -0
  396. package/skills/builtin/skill-creator/LICENSE.txt +202 -0
  397. package/skills/builtin/skill-creator/SKILL.md +513 -0
  398. package/skills/builtin/skill-creator/agents/analyzer.md +274 -0
  399. package/skills/builtin/skill-creator/agents/comparator.md +202 -0
  400. package/skills/builtin/skill-creator/agents/grader.md +223 -0
  401. package/skills/builtin/skill-creator/assets/eval_review.html +146 -0
  402. package/skills/builtin/skill-creator/eval-viewer/generate_review.py +471 -0
  403. package/skills/builtin/skill-creator/eval-viewer/viewer.html +1325 -0
  404. package/skills/builtin/skill-creator/references/schemas.md +430 -0
  405. package/skills/builtin/skill-creator/scripts/__init__.py +0 -0
  406. package/skills/builtin/skill-creator/scripts/aggregate_benchmark.py +401 -0
  407. package/skills/builtin/skill-creator/scripts/generate_report.py +326 -0
  408. package/skills/builtin/skill-creator/scripts/improve_description.py +247 -0
  409. package/skills/builtin/skill-creator/scripts/package_skill.py +136 -0
  410. package/skills/builtin/skill-creator/scripts/quick_validate.py +103 -0
  411. package/skills/builtin/skill-creator/scripts/run_eval.py +310 -0
  412. package/skills/builtin/skill-creator/scripts/run_loop.py +328 -0
  413. package/skills/builtin/skill-creator/scripts/utils.py +47 -0
  414. package/skills/builtin/web-annotations/SKILL.md +93 -0
  415. package/dist/apps/chat-ui/assets/index-D2Qxambd.js +0 -151
  416. package/dist/apps/chat-ui/assets/index-DXx368XK.css +0 -1
  417. package/dist/env.js +0 -32
  418. package/dist/plugins/core-tools.js +0 -94
  419. package/dist/plugins/example.js +0 -67
  420. package/dist/plugins/remote-agent.js +0 -9
  421. package/dist/remote/channel.js +0 -176
  422. package/dist/remote/client.js +0 -92
  423. package/dist/remote/examples/tui-controller.js +0 -263
  424. package/dist/remote/protocol.js +0 -55
  425. package/dist/remote/session-client.js +0 -189
  426. package/dist/sessions/bindings.js +0 -41
@@ -21,7 +21,6 @@ const BLOCKED_PI_TUI_COMMANDS = new Set([
21
21
  "login",
22
22
  "logout",
23
23
  "new",
24
- "compact",
25
24
  "reload",
26
25
  "debug",
27
26
  "resume",
@@ -196,10 +195,14 @@ function isThinkingResult(value) {
196
195
  return typeof candidate.level === "string" && typeof candidate.supported === "boolean";
197
196
  }
198
197
  function createExecutionParams(slashCommand, args = "") {
199
- if (slashCommand !== "/thinking")
200
- return undefined;
201
- const level = args.trim();
202
- return level ? { level: parsePiboThinkingLevel(level) } : undefined;
198
+ const trimmedArgs = args.trim();
199
+ if (slashCommand === "/thinking") {
200
+ const level = trimmedArgs.split(/\s+/, 1)[0];
201
+ return level ? { level: parsePiboThinkingLevel(level) } : undefined;
202
+ }
203
+ if (slashCommand === "/compact")
204
+ return trimmedArgs ? { customInstructions: trimmedArgs } : undefined;
205
+ return undefined;
203
206
  }
204
207
  function formatExecutionResult(event) {
205
208
  if (event.action === "status" && isSessionStatus(event.result)) {
@@ -1,11 +1,31 @@
1
+ import { dirname, resolve } from "node:path";
2
+ import { fileURLToPath } from "node:url";
1
3
  import { createPiboGatewayToolProfiles } from "../gateway/tool.js";
2
4
  import { InitialSessionContextBuilder } from "../core/profiles.js";
3
5
  import { parsePiboThinkingLevel } from "../core/thinking.js";
4
6
  import { createWebSearchToolProfile } from "../tools/web-search.js";
7
+ import { createRuntimeToolProfile } from "../tools/runtime/tool.js";
8
+ import { completeLogin, getLoginStatus, removeLogin, setApiKey, startLogin } from "../auth/login-actions.js";
9
+ import { loadModelCatalog } from "../apps/chat/model-catalog.js";
5
10
  import { piboCodexCompatPlugin } from "./codex-compat.js";
11
+ import { addPiboNativeToolingContext, registerPiboNativeTooling } from "./native-tooling.js";
12
+ import { piboWebAnnotationsPlugin } from "./web-annotations.js";
6
13
  import { definePiboPlugin, PiboPluginRegistry } from "./registry.js";
14
+ export const DEFAULT_PIBO_PROFILE_NAME = "base";
7
15
  const GATEWAY_PROFILE_TOOLS = ["pibo_gateway_send"];
8
- const RUN_YIELD_QA_SUBAGENTS = ["qa-researcher", "qa-reviewer"];
16
+ const PIBO_PACKAGE_ROOT = resolve(dirname(fileURLToPath(import.meta.url)), "../..");
17
+ function builtinSkillPath(name) {
18
+ return resolve(PIBO_PACKAGE_ROOT, "skills", "builtin", name, "SKILL.md");
19
+ }
20
+ const LOGIN_PROVIDERS = [
21
+ { id: "openai-codex", name: "OpenAI (ChatGPT Plus/Pro)", authMethods: ["device_code"] },
22
+ { id: "openai", name: "OpenAI API", authMethods: ["api_key"] },
23
+ { id: "anthropic", name: "Anthropic", authMethods: ["api_key"] },
24
+ { id: "kimi-coding", name: "Kimi for Coding", authMethods: ["api_key"] },
25
+ { id: "google", name: "Google Gemini", authMethods: ["api_key"] },
26
+ { id: "groq", name: "Groq", authMethods: ["api_key"] },
27
+ { id: "ollama", name: "Ollama", authMethods: ["api_key"] },
28
+ ];
9
29
  function getObjectParams(event) {
10
30
  const params = "params" in event ? event.params : undefined;
11
31
  if (!params || typeof params !== "object" || Array.isArray(params))
@@ -53,9 +73,46 @@ function getThinkingParams(event) {
53
73
  throw new Error("thinking requires params.level to be a string");
54
74
  return { level: parsePiboThinkingLevel(raw.level) };
55
75
  }
76
+ function requireLoginStartParams(event) {
77
+ const params = getObjectParams(event);
78
+ if (!params || typeof params.provider !== "string" || params.provider.length === 0) {
79
+ throw new Error("login.start requires params.provider");
80
+ }
81
+ return { provider: params.provider };
82
+ }
83
+ function requireLoginCompleteParams(event) {
84
+ const params = getObjectParams(event);
85
+ if (!params || typeof params.provider !== "string" || params.provider.length === 0) {
86
+ throw new Error("login.complete requires params.provider");
87
+ }
88
+ if (params.code !== undefined && typeof params.code !== "string") {
89
+ throw new Error("login.complete params.code must be a string when provided");
90
+ }
91
+ if (typeof params.state !== "string" || params.state.length === 0) {
92
+ throw new Error("login.complete requires params.state");
93
+ }
94
+ return { provider: params.provider, code: params.code, state: params.state };
95
+ }
96
+ function requireLoginApiKeyParams(event) {
97
+ const params = getObjectParams(event);
98
+ if (!params || typeof params.provider !== "string" || params.provider.length === 0) {
99
+ throw new Error("login.apikey requires params.provider");
100
+ }
101
+ if (typeof params.apiKey !== "string" || params.apiKey.length === 0) {
102
+ throw new Error("login.apikey requires params.apiKey");
103
+ }
104
+ return { provider: params.provider, apiKey: params.apiKey };
105
+ }
106
+ function requireLogoutParams(event) {
107
+ const params = getObjectParams(event);
108
+ if (!params || typeof params.provider !== "string" || params.provider.length === 0) {
109
+ throw new Error("logout requires params.provider");
110
+ }
111
+ return { provider: params.provider };
112
+ }
56
113
  function createBaseProfileBuilder(profileName, context) {
57
- return new InitialSessionContextBuilder(profileName)
58
- .addSkill(context.getSkill("pi-agent-harness"));
114
+ return addPiboNativeToolingContext(new InitialSessionContextBuilder(profileName)
115
+ .addSkill(context.getSkill("pi-agent-harness")), context);
59
116
  }
60
117
  export const piboCorePlugin = definePiboPlugin({
61
118
  id: "pibo.core",
@@ -63,58 +120,73 @@ export const piboCorePlugin = definePiboPlugin({
63
120
  register(api) {
64
121
  api.registerSkill({
65
122
  name: "pi-agent-harness",
66
- path: "skills/builtin/pi-agent-harness/SKILL.md",
123
+ path: builtinSkillPath("pi-agent-harness"),
67
124
  kind: "builtin",
68
125
  });
69
- api.registerTool(createWebSearchToolProfile());
70
- api.registerSubagents([
71
- {
72
- name: "qa-researcher",
73
- description: "QA helper subagent for run-yield testing. Use it for small research or inspection tasks.",
74
- targetProfile: "pibo-minimal",
75
- },
76
- {
77
- name: "qa-reviewer",
78
- description: "QA reviewer subagent for run-yield testing. Use it for independent review or validation tasks.",
79
- targetProfile: "pibo-minimal",
80
- },
81
- ]);
82
- api.registerProfile({
83
- name: "pibo-minimal",
84
- aliases: ["minimal"],
85
- description: "Minimal pibo profile with the harness skill.",
86
- create(context) {
87
- return createBaseProfileBuilder("pibo-minimal", context)
88
- .createSession();
89
- },
126
+ api.registerSkill({
127
+ name: "pibo-spec-writing",
128
+ path: builtinSkillPath("pibo-spec-writing"),
129
+ kind: "builtin",
90
130
  });
91
- api.registerProfile({
92
- name: "pibo-run-yield-qa",
93
- aliases: ["run-yield-qa", "yield-qa"],
94
- description: "QA profile with two simple subagents for testing yielded run control.",
95
- create(context) {
96
- return createBaseProfileBuilder("pibo-run-yield-qa", context)
97
- .withToolPackages({ runControl: true })
98
- .addSubagents(context.getSubagents(RUN_YIELD_QA_SUBAGENTS))
99
- .createSession();
100
- },
131
+ api.registerSkill({
132
+ name: "pibo-docker-system",
133
+ path: builtinSkillPath("pibo-docker-system"),
134
+ kind: "builtin",
135
+ });
136
+ api.registerSkill({
137
+ name: "prd",
138
+ path: builtinSkillPath("prd"),
139
+ kind: "builtin",
101
140
  });
141
+ api.registerSkill({
142
+ name: "skill-creator",
143
+ path: builtinSkillPath("skill-creator"),
144
+ kind: "builtin",
145
+ });
146
+ api.registerSkill({
147
+ name: "ralph-loop",
148
+ path: builtinSkillPath("ralph-loop"),
149
+ kind: "builtin",
150
+ });
151
+ api.registerSkill({
152
+ name: "ralph-prd-json",
153
+ path: builtinSkillPath("ralph-prd-json"),
154
+ kind: "builtin",
155
+ });
156
+ api.registerTool(createWebSearchToolProfile());
157
+ api.registerTool(createRuntimeToolProfile());
158
+ registerPiboNativeTooling(api);
102
159
  api.registerProfile({
103
- name: "pibo-kimi-coding",
104
- aliases: ["kimi", "kimi-coding"],
105
- description: "Pibo profile pinned to Kimi For Coding. Requires KIMI_API_KEY or configured kimi-coding auth.",
106
- create(context) {
107
- return createBaseProfileBuilder("pibo-kimi-coding", context)
108
- .withModel({ provider: "kimi-coding", id: "kimi-for-coding" })
160
+ name: DEFAULT_PIBO_PROFILE_NAME,
161
+ description: "Base agent with only the four Pi built-in tools.",
162
+ create() {
163
+ return new InitialSessionContextBuilder(DEFAULT_PIBO_PROFILE_NAME)
164
+ .withBuiltinToolNames(["read", "bash", "edit", "write"])
109
165
  .createSession();
110
166
  },
111
167
  });
112
168
  api.registerGatewayAction({
113
169
  name: "status",
114
- description: "Return current session status.",
170
+ description: "Return current session status with context usage quota.",
115
171
  slashCommands: ["status"],
116
- execute(context) {
117
- return context.getStatus();
172
+ async execute(context) {
173
+ const providerUsage = await context.getProviderUsage();
174
+ return {
175
+ ...context.getStatus(),
176
+ activeModel: context.getActiveModel(),
177
+ contextUsage: context.getContextUsage(),
178
+ ...(providerUsage ? { providerUsage } : {}),
179
+ };
180
+ },
181
+ });
182
+ api.registerGatewayAction({
183
+ name: "compact",
184
+ description: "Manually compact the session context.",
185
+ slashCommands: ["compact"],
186
+ async execute(context, event) {
187
+ const params = getObjectParams(event);
188
+ const customInstructions = typeof params?.customInstructions === "string" ? params.customInstructions : undefined;
189
+ return await context.compact(customInstructions);
118
190
  },
119
191
  });
120
192
  api.registerGatewayAction({
@@ -142,6 +214,22 @@ export const piboCorePlugin = definePiboPlugin({
142
214
  return { aborted: true };
143
215
  },
144
216
  });
217
+ api.registerGatewayAction({
218
+ name: "kill",
219
+ description: "Kill the active agent run and all subagent sessions recursively.",
220
+ slashCommands: ["kill"],
221
+ async execute(context) {
222
+ return await context.kill();
223
+ },
224
+ });
225
+ api.registerGatewayAction({
226
+ name: "kill_all",
227
+ description: "Kill the active agent run, all subagent sessions recursively, and all yielded runs.",
228
+ slashCommands: ["kill-all"],
229
+ async execute(context) {
230
+ return await context.killAll();
231
+ },
232
+ });
145
233
  api.registerGatewayAction({
146
234
  name: "dispose",
147
235
  description: "Dispose the routed session runtime.",
@@ -153,11 +241,22 @@ export const piboCorePlugin = definePiboPlugin({
153
241
  });
154
242
  api.registerGatewayAction({
155
243
  name: "thinking",
156
- description: "Cycle or set the routed Pi thinking level.",
244
+ description: "Show or set the routed Pi thinking level.",
157
245
  slashCommands: ["thinking"],
158
246
  execute(context, event) {
159
247
  const params = getThinkingParams(event);
160
- return params.level ? context.setThinkingLevel(params.level) : context.cycleThinkingLevel();
248
+ return params.level ? context.setThinkingLevel(params.level) : context.getThinkingLevel();
249
+ },
250
+ });
251
+ api.registerGatewayAction({
252
+ name: "fast_mode",
253
+ description: "Toggle OpenAI priority service tier for fast-capable reasoning models.",
254
+ slashCommands: ["fast"],
255
+ execute(context) {
256
+ const current = context.getFastMode();
257
+ if (!current.supported)
258
+ return { ...current, changed: false };
259
+ return context.setFastMode(current.mode !== "fast");
161
260
  },
162
261
  });
163
262
  api.registerGatewayAction({
@@ -222,6 +321,85 @@ export const piboCorePlugin = definePiboPlugin({
222
321
  return await context.switchSession(requireSwitchParams(event));
223
322
  },
224
323
  });
324
+ api.registerGatewayAction({
325
+ name: "login",
326
+ description: "Open the interactive provider login menu.",
327
+ slashCommands: ["login"],
328
+ execute() {
329
+ const statuses = new Map(getLoginStatus().map((status) => [status.id, status.configured]));
330
+ return {
331
+ action: "show_login_menu",
332
+ providers: LOGIN_PROVIDERS.map((provider) => ({
333
+ ...provider,
334
+ authMethods: [...provider.authMethods],
335
+ configured: statuses.get(provider.id) ?? false,
336
+ })),
337
+ };
338
+ },
339
+ });
340
+ api.registerGatewayAction({
341
+ name: "model",
342
+ description: "Open the interactive model selector for authenticated providers.",
343
+ slashCommands: ["model", "models"],
344
+ async execute() {
345
+ const catalog = await loadModelCatalog(process.cwd());
346
+ return {
347
+ action: "show_model_menu",
348
+ providers: catalog.providers
349
+ .filter((provider) => provider.authConfigured)
350
+ .map((provider) => ({
351
+ ...provider,
352
+ models: provider.models.filter((model) => model.authConfigured !== false),
353
+ })),
354
+ };
355
+ },
356
+ });
357
+ api.registerGatewayAction({
358
+ name: "login.start",
359
+ description: "Start an OAuth login flow for a provider. Returns a URL to open in a browser.",
360
+ slashCommands: [],
361
+ async execute(_context, event) {
362
+ const params = requireLoginStartParams(event);
363
+ return await startLogin(params.provider);
364
+ },
365
+ });
366
+ api.registerGatewayAction({
367
+ name: "login.complete",
368
+ description: "Complete an OAuth login flow with the authorization code from the provider callback.",
369
+ slashCommands: [],
370
+ async execute(_context, event) {
371
+ const params = requireLoginCompleteParams(event);
372
+ return await completeLogin(params.provider, params.code, params.state);
373
+ },
374
+ });
375
+ api.registerGatewayAction({
376
+ name: "login.apikey",
377
+ description: "Set an API key directly for a provider.",
378
+ slashCommands: [],
379
+ execute(_context, event) {
380
+ const params = requireLoginApiKeyParams(event);
381
+ return setApiKey(params.provider, params.apiKey);
382
+ },
383
+ });
384
+ api.registerGatewayAction({
385
+ name: "login.status",
386
+ description: "Check the authentication status for providers.",
387
+ slashCommands: [],
388
+ execute(_context, event) {
389
+ const params = getObjectParams(event);
390
+ const provider = typeof params?.provider === "string" ? params.provider : undefined;
391
+ return { providers: getLoginStatus(provider) };
392
+ },
393
+ });
394
+ api.registerGatewayAction({
395
+ name: "logout",
396
+ description: "Remove stored credentials for a provider.",
397
+ slashCommands: [],
398
+ execute(_context, event) {
399
+ const params = requireLogoutParams(event);
400
+ return removeLogin(params.provider);
401
+ },
402
+ });
225
403
  },
226
404
  });
227
405
  export const piboGatewayProducerPlugin = definePiboPlugin({
@@ -242,18 +420,42 @@ export const piboGatewayProducerPlugin = definePiboPlugin({
242
420
  },
243
421
  });
244
422
  export function createDefaultPiboPlugins() {
245
- return [piboCorePlugin, piboCodexCompatPlugin];
423
+ return [piboCorePlugin, piboCodexCompatPlugin, piboWebAnnotationsPlugin];
246
424
  }
247
425
  export function createGatewayProducerPiboPluginRegistry() {
248
426
  return PiboPluginRegistry.create({
249
- plugins: [piboCorePlugin, piboGatewayProducerPlugin, piboCodexCompatPlugin],
427
+ plugins: [piboCorePlugin, piboGatewayProducerPlugin, piboCodexCompatPlugin, piboWebAnnotationsPlugin],
250
428
  });
251
429
  }
252
430
  export function createDefaultPiboPluginRegistry() {
253
431
  return PiboPluginRegistry.create({ plugins: createDefaultPiboPlugins() });
254
432
  }
433
+ export function selectDefaultPiboProfileName(registry) {
434
+ const names = registry.getProfileNames();
435
+ return names.includes(DEFAULT_PIBO_PROFILE_NAME) ? DEFAULT_PIBO_PROFILE_NAME : names[0] ?? DEFAULT_PIBO_PROFILE_NAME;
436
+ }
255
437
  export function createDefaultPiboProfile() {
256
- return createDefaultPiboPluginRegistry().createProfile("pibo-minimal");
438
+ return new InitialSessionContextBuilder(DEFAULT_PIBO_PROFILE_NAME)
439
+ .withBuiltinToolNames(["read", "bash", "edit", "write"])
440
+ .createSession();
441
+ }
442
+ export function resolvePiboProfileNameFromRegistryOrDefault(registry, profileName) {
443
+ const requestedProfileName = profileName ?? selectDefaultPiboProfileName(registry);
444
+ try {
445
+ return registry.resolveProfileName(requestedProfileName);
446
+ }
447
+ catch (error) {
448
+ if (requestedProfileName === DEFAULT_PIBO_PROFILE_NAME)
449
+ return DEFAULT_PIBO_PROFILE_NAME;
450
+ throw error;
451
+ }
452
+ }
453
+ export function createPiboProfileFromRegistryOrDefault(registry, profileName) {
454
+ const resolvedProfileName = resolvePiboProfileNameFromRegistryOrDefault(registry, profileName);
455
+ if (resolvedProfileName === DEFAULT_PIBO_PROFILE_NAME && !registry.getProfileNames().includes(DEFAULT_PIBO_PROFILE_NAME)) {
456
+ return createDefaultPiboProfile();
457
+ }
458
+ return registry.createProfile(resolvedProfileName);
257
459
  }
258
460
  export function createGatewayProducerPiboProfile() {
259
461
  return createGatewayProducerPiboPluginRegistry().createProfile("pibo-gateway-producer");
@@ -0,0 +1,28 @@
1
+ import { definePiboPlugin } from "./registry.js";
2
+ import { isVscodeAppPath, responseBuiltVscodeAsset, responseVscodeAppShell } from "../apps/chat/static-assets.js";
3
+ import { responseJson } from "../web/http.js";
4
+ const CHAT_VSCODE_WEB_APP_NAME = "pibo.chat-vscode-web";
5
+ export const CHAT_VSCODE_MOUNT_PATH = "/apps/chat-vscode";
6
+ export function createPiboChatVscodeWebPlugin() {
7
+ return definePiboPlugin({
8
+ id: "pibo.chat-vscode-web",
9
+ name: "Pibo Chat VS Code Web",
10
+ register(api) {
11
+ api.registerWebApp({
12
+ name: CHAT_VSCODE_WEB_APP_NAME,
13
+ mountPath: CHAT_VSCODE_MOUNT_PATH,
14
+ apiPrefix: CHAT_VSCODE_MOUNT_PATH,
15
+ async handleRequest(request) {
16
+ const url = new URL(request.url);
17
+ const builtAsset = responseBuiltVscodeAsset(request, url.pathname);
18
+ if (builtAsset)
19
+ return builtAsset;
20
+ if (isVscodeAppPath(url.pathname) && request.method === "GET") {
21
+ return responseVscodeAppShell();
22
+ }
23
+ return responseJson({ error: "Not found" }, { status: 404 });
24
+ },
25
+ });
26
+ },
27
+ });
28
+ }
@@ -1,17 +1,10 @@
1
1
  import { dirname, resolve } from "node:path";
2
2
  import { fileURLToPath } from "node:url";
3
- import { InitialSessionContextBuilder } from "../core/profiles.js";
4
3
  import { definePiboPlugin } from "./registry.js";
5
- const CODEX_COMPAT_TOOL_NAMES = [
6
- "apply_patch",
7
- "web_search",
8
- "view_image",
9
- ];
10
4
  const CODEX_COMPAT_REGISTERED_TOOL_NAMES = [
11
5
  "apply_patch",
12
6
  "view_image",
13
7
  ];
14
- const CODEX_COMPAT_SUBAGENTS = ["default", "explorer", "worker"];
15
8
  const CODEX_BASE_PROMPT_CONTEXT_FILE_KEY = "Codex Base Prompt";
16
9
  const PROJECT_ROOT = dirname(dirname(dirname(fileURLToPath(import.meta.url))));
17
10
  const CODEX_BASE_PROMPT_CONTEXT_FILE_PATH = resolve(PROJECT_ROOT, "context/codex-base-prompt.md");
@@ -34,39 +27,5 @@ export const piboCodexCompatPlugin = definePiboPlugin({
34
27
  label: "Codex Base Prompt",
35
28
  path: CODEX_BASE_PROMPT_CONTEXT_FILE_PATH,
36
29
  });
37
- api.registerSubagents([
38
- {
39
- name: "default",
40
- description: "General delegated Codex-compatible child agent.",
41
- targetProfile: "codex-compat-openai-web",
42
- },
43
- {
44
- name: "explorer",
45
- description: "Read-focused delegated agent for scoped codebase questions.",
46
- targetProfile: "codex-compat-openai-web",
47
- },
48
- {
49
- name: "worker",
50
- description: "Execution-focused delegated agent for bounded implementation work.",
51
- targetProfile: "codex-compat-openai-web",
52
- },
53
- ]);
54
- api.registerProfile({
55
- name: "codex-compat-openai-web",
56
- aliases: ["codex"],
57
- description: "Codex-compatible Pibo profile with native provider-backed web_search.",
58
- create(context) {
59
- return new InitialSessionContextBuilder("codex-compat-openai-web")
60
- .withBuiltinToolNames(["read", "edit", "write"])
61
- .withToolPackages({
62
- codexCompat: true,
63
- runControl: true,
64
- })
65
- .addTools(context.getTools(CODEX_COMPAT_TOOL_NAMES))
66
- .addSubagents(context.getSubagents(CODEX_COMPAT_SUBAGENTS))
67
- .addContextFile(context.getContextFile(CODEX_BASE_PROMPT_CONTEXT_FILE_KEY))
68
- .createSession();
69
- },
70
- });
71
30
  },
72
31
  });