@pasko70/pibo 1.0.5 → 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 (429) hide show
  1. package/README.md +106 -250
  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 +42 -5
  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 +47 -0
  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 +3168 -1811
  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-CI0Xj2Cp.js → dist-B4lw9z4F.js} +1 -1
  54. package/dist/apps/chat-ui/assets/{dist-aMr2VYOu.js → dist-BbTaHWON.js} +1 -1
  55. package/dist/apps/chat-ui/assets/{dist-u2OzzOTm.js → dist-BcT_c1EJ.js} +1 -1
  56. package/dist/apps/chat-ui/assets/{dist-Di1ScJ22.js → dist-CGINd7XU.js} +1 -1
  57. package/dist/apps/chat-ui/assets/{dist-wiRpAHIv.js → dist-CrBzZkUp.js} +1 -1
  58. package/dist/apps/chat-ui/assets/{dist-CaNOvqMY.js → dist-CyyISotB.js} +1 -1
  59. package/dist/apps/chat-ui/assets/{dist-zgYUl2B-.js → dist-DFbnFNpX.js} +1 -1
  60. package/dist/apps/chat-ui/assets/{dist-CNlhGq5i.js → dist-DGLWQLX8.js} +1 -1
  61. package/dist/apps/chat-ui/assets/{dist-BGxHKHPX.js → dist-DfcIkFSN.js} +1 -1
  62. package/dist/apps/chat-ui/assets/{dist-DrM-H3e1.js → dist-sKDHTwaT.js} +1 -1
  63. package/dist/apps/chat-ui/assets/{dist-DpmEro5R.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 +174 -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 +252 -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 +66 -2
  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 +214 -0
  373. package/dist/user-skills/manager.js +35 -0
  374. package/dist/user-skills/store.js +267 -0
  375. package/dist/user-skills/types.js +1 -0
  376. package/dist/web/auth.js +5 -1
  377. package/dist/web/channel.js +86 -0
  378. package/dist/web/http.js +79 -14
  379. package/dist/web-annotations/api.js +348 -0
  380. package/dist/web-annotations/attachments.js +201 -0
  381. package/dist/web-annotations/cdp.js +1107 -0
  382. package/dist/web-annotations/index.js +7 -0
  383. package/dist/web-annotations/store.js +407 -0
  384. package/dist/web-annotations/tools.js +350 -0
  385. package/dist/web-annotations/types.js +34 -0
  386. package/dist/web-annotations/validation.js +288 -0
  387. package/docs/README.md +23 -0
  388. package/docs/ops/install-developer-host.md +112 -0
  389. package/docs/ops/install-user-host.md +76 -0
  390. package/docs/ops/upgrade-user-to-developer-host.md +69 -0
  391. package/package.json +24 -10
  392. package/{.codex/skills → skills/builtin}/pi-agent-harness/SKILL.md +24 -24
  393. package/skills/builtin/pibo-docker-system/SKILL.md +170 -0
  394. package/skills/builtin/pibo-spec-writing/SKILL.md +330 -0
  395. package/skills/builtin/prd/SKILL.md +143 -0
  396. package/skills/builtin/ralph-loop/SKILL.md +359 -0
  397. package/skills/builtin/ralph-prd-json/SKILL.md +123 -0
  398. package/skills/builtin/skill-creator/LICENSE.txt +202 -0
  399. package/skills/builtin/skill-creator/SKILL.md +513 -0
  400. package/skills/builtin/skill-creator/agents/analyzer.md +274 -0
  401. package/skills/builtin/skill-creator/agents/comparator.md +202 -0
  402. package/skills/builtin/skill-creator/agents/grader.md +223 -0
  403. package/skills/builtin/skill-creator/assets/eval_review.html +146 -0
  404. package/skills/builtin/skill-creator/eval-viewer/generate_review.py +471 -0
  405. package/skills/builtin/skill-creator/eval-viewer/viewer.html +1325 -0
  406. package/skills/builtin/skill-creator/references/schemas.md +430 -0
  407. package/skills/builtin/skill-creator/scripts/__init__.py +0 -0
  408. package/skills/builtin/skill-creator/scripts/aggregate_benchmark.py +401 -0
  409. package/skills/builtin/skill-creator/scripts/generate_report.py +326 -0
  410. package/skills/builtin/skill-creator/scripts/improve_description.py +247 -0
  411. package/skills/builtin/skill-creator/scripts/package_skill.py +136 -0
  412. package/skills/builtin/skill-creator/scripts/quick_validate.py +103 -0
  413. package/skills/builtin/skill-creator/scripts/run_eval.py +310 -0
  414. package/skills/builtin/skill-creator/scripts/run_loop.py +328 -0
  415. package/skills/builtin/skill-creator/scripts/utils.py +47 -0
  416. package/skills/builtin/web-annotations/SKILL.md +93 -0
  417. package/dist/apps/chat-ui/assets/index-B_E935fP.js +0 -151
  418. package/dist/apps/chat-ui/assets/index-Dk-opWl3.css +0 -1
  419. package/dist/env.js +0 -32
  420. package/dist/plugins/core-tools.js +0 -94
  421. package/dist/plugins/example.js +0 -67
  422. package/dist/plugins/remote-agent.js +0 -9
  423. package/dist/remote/channel.js +0 -176
  424. package/dist/remote/client.js +0 -92
  425. package/dist/remote/examples/tui-controller.js +0 -263
  426. package/dist/remote/protocol.js +0 -55
  427. package/dist/remote/session-client.js +0 -189
  428. package/dist/sessions/bindings.js +0 -41
  429. /package/{.codex/skills → skills/builtin}/pi-agent-harness/agents/openai.yaml +0 -0
@@ -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,57 +120,73 @@ export const piboCorePlugin = definePiboPlugin({
63
120
  register(api) {
64
121
  api.registerSkill({
65
122
  name: "pi-agent-harness",
66
- path: ".codex/skills/pi-agent-harness/SKILL.md",
123
+ path: builtinSkillPath("pi-agent-harness"),
124
+ kind: "builtin",
67
125
  });
68
- api.registerTool(createWebSearchToolProfile());
69
- api.registerSubagents([
70
- {
71
- name: "qa-researcher",
72
- description: "QA helper subagent for run-yield testing. Use it for small research or inspection tasks.",
73
- targetProfile: "pibo-minimal",
74
- },
75
- {
76
- name: "qa-reviewer",
77
- description: "QA reviewer subagent for run-yield testing. Use it for independent review or validation tasks.",
78
- targetProfile: "pibo-minimal",
79
- },
80
- ]);
81
- api.registerProfile({
82
- name: "pibo-minimal",
83
- aliases: ["minimal"],
84
- description: "Minimal pibo profile with the harness skill.",
85
- create(context) {
86
- return createBaseProfileBuilder("pibo-minimal", context)
87
- .createSession();
88
- },
126
+ api.registerSkill({
127
+ name: "pibo-spec-writing",
128
+ path: builtinSkillPath("pibo-spec-writing"),
129
+ kind: "builtin",
89
130
  });
90
- api.registerProfile({
91
- name: "pibo-run-yield-qa",
92
- aliases: ["run-yield-qa", "yield-qa"],
93
- description: "QA profile with two simple subagents for testing yielded run control.",
94
- create(context) {
95
- return createBaseProfileBuilder("pibo-run-yield-qa", context)
96
- .withToolPackages({ runControl: true })
97
- .addSubagents(context.getSubagents(RUN_YIELD_QA_SUBAGENTS))
98
- .createSession();
99
- },
131
+ api.registerSkill({
132
+ name: "pibo-docker-system",
133
+ path: builtinSkillPath("pibo-docker-system"),
134
+ kind: "builtin",
100
135
  });
136
+ api.registerSkill({
137
+ name: "prd",
138
+ path: builtinSkillPath("prd"),
139
+ kind: "builtin",
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);
101
159
  api.registerProfile({
102
- name: "pibo-kimi-coding",
103
- aliases: ["kimi", "kimi-coding"],
104
- description: "Pibo profile pinned to Kimi For Coding. Requires KIMI_API_KEY or configured kimi-coding auth.",
105
- create(context) {
106
- return createBaseProfileBuilder("pibo-kimi-coding", context)
107
- .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"])
108
165
  .createSession();
109
166
  },
110
167
  });
111
168
  api.registerGatewayAction({
112
169
  name: "status",
113
- description: "Return current session status.",
170
+ description: "Return current session status with context usage quota.",
114
171
  slashCommands: ["status"],
115
- execute(context) {
116
- 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);
117
190
  },
118
191
  });
119
192
  api.registerGatewayAction({
@@ -141,6 +214,22 @@ export const piboCorePlugin = definePiboPlugin({
141
214
  return { aborted: true };
142
215
  },
143
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
+ });
144
233
  api.registerGatewayAction({
145
234
  name: "dispose",
146
235
  description: "Dispose the routed session runtime.",
@@ -152,11 +241,22 @@ export const piboCorePlugin = definePiboPlugin({
152
241
  });
153
242
  api.registerGatewayAction({
154
243
  name: "thinking",
155
- description: "Cycle or set the routed Pi thinking level.",
244
+ description: "Show or set the routed Pi thinking level.",
156
245
  slashCommands: ["thinking"],
157
246
  execute(context, event) {
158
247
  const params = getThinkingParams(event);
159
- 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");
160
260
  },
161
261
  });
162
262
  api.registerGatewayAction({
@@ -221,6 +321,85 @@ export const piboCorePlugin = definePiboPlugin({
221
321
  return await context.switchSession(requireSwitchParams(event));
222
322
  },
223
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
+ });
224
403
  },
225
404
  });
226
405
  export const piboGatewayProducerPlugin = definePiboPlugin({
@@ -241,18 +420,42 @@ export const piboGatewayProducerPlugin = definePiboPlugin({
241
420
  },
242
421
  });
243
422
  export function createDefaultPiboPlugins() {
244
- return [piboCorePlugin, piboCodexCompatPlugin];
423
+ return [piboCorePlugin, piboCodexCompatPlugin, piboWebAnnotationsPlugin];
245
424
  }
246
425
  export function createGatewayProducerPiboPluginRegistry() {
247
426
  return PiboPluginRegistry.create({
248
- plugins: [piboCorePlugin, piboGatewayProducerPlugin, piboCodexCompatPlugin],
427
+ plugins: [piboCorePlugin, piboGatewayProducerPlugin, piboCodexCompatPlugin, piboWebAnnotationsPlugin],
249
428
  });
250
429
  }
251
430
  export function createDefaultPiboPluginRegistry() {
252
431
  return PiboPluginRegistry.create({ plugins: createDefaultPiboPlugins() });
253
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
+ }
254
437
  export function createDefaultPiboProfile() {
255
- 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);
256
459
  }
257
460
  export function createGatewayProducerPiboProfile() {
258
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
  });