@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.
- package/README.md +106 -254
- package/context/codex-base-prompt.md +4 -0
- package/context/compute-worker.md +23 -0
- package/context/pibo-native-tooling.md +18 -0
- package/context/pibo-system-prompt.md +69 -8
- package/dist/api/simple-agent-api.js +136 -0
- package/dist/app-context.js +4 -0
- package/dist/apps/chat/agent-profiles.js +18 -3
- package/dist/apps/chat/agent-store.js +113 -16
- package/dist/apps/chat/chat-api-routes.js +311 -0
- package/dist/apps/chat/chat-capability-routes.js +90 -0
- package/dist/apps/chat/chat-files.js +178 -0
- package/dist/apps/chat/chat-request-normalizers.js +681 -0
- package/dist/apps/chat/chat-settings-routes.js +75 -0
- package/dist/apps/chat/chat-trace-helpers.js +94 -0
- package/dist/apps/chat/chat-user-skill-routes.js +149 -0
- package/dist/apps/chat/cron-api.js +213 -0
- package/dist/apps/chat/data/chat-data-mappers.js +74 -0
- package/dist/apps/chat/data/event-command-service.js +75 -0
- package/dist/apps/chat/data/navigation-query-service.js +11 -0
- package/dist/apps/chat/data/project-service.js +844 -0
- package/dist/apps/chat/data/read-state-service.js +42 -0
- package/dist/apps/chat/data/room-service.js +52 -0
- package/dist/apps/chat/data/session-query-service.js +63 -0
- package/dist/apps/chat/data/timeline-query-service.js +96 -0
- package/dist/apps/chat/event-log.js +1 -307
- package/dist/apps/chat/model-catalog.js +7 -2
- package/dist/apps/chat/output-compactor.js +126 -0
- package/dist/apps/chat/output-event-policy.js +17 -0
- package/dist/apps/chat/project-workflow-human-actions.js +347 -0
- package/dist/apps/chat/project-workflow-sessions.js +260 -0
- package/dist/apps/chat/provider-auth-actions.js +43 -0
- package/dist/apps/chat/ralph-api.js +156 -0
- package/dist/apps/chat/read-model.js +1 -218
- package/dist/apps/chat/rooms.js +1 -321
- package/dist/apps/chat/static-assets.js +996 -0
- package/dist/apps/chat/stream.js +29 -6
- package/dist/apps/chat/trace.js +179 -1003
- package/dist/apps/chat/types/event-store.js +1 -0
- package/dist/apps/chat/types/read-model.js +1 -0
- package/dist/apps/chat/types/rooms.js +36 -0
- package/dist/apps/chat/web-app.js +3131 -1959
- package/dist/apps/chat/workflow-catalog.js +572 -0
- package/dist/apps/chat/workflow-edge-compatibility.js +51 -0
- package/dist/apps/chat/workflow-json-schema-validation.js +335 -0
- package/dist/apps/chat/workflow-persistence-model.js +140 -0
- package/dist/apps/chat/workflow-persistence.js +633 -0
- package/dist/apps/chat/workflow-registered-ref-params.js +130 -0
- package/dist/apps/chat/workflow-registered-ref-pickers.js +179 -0
- package/dist/apps/chat/workflow-registered-ref-validation.js +210 -0
- package/dist/apps/chat/workflow-v2-security-validation.js +93 -0
- package/dist/apps/chat/workflow-validation-helpers.js +114 -0
- package/dist/apps/chat-ui/assets/{dist-CNLWH2qh.js → dist-B4lw9z4F.js} +1 -1
- package/dist/apps/chat-ui/assets/{dist-8e4L8ciw.js → dist-BbTaHWON.js} +1 -1
- package/dist/apps/chat-ui/assets/{dist-CMZOa5ik.js → dist-BcT_c1EJ.js} +1 -1
- package/dist/apps/chat-ui/assets/{dist-DNcnQRPF.js → dist-CGINd7XU.js} +1 -1
- package/dist/apps/chat-ui/assets/{dist-CqqUC8Ce.js → dist-CrBzZkUp.js} +1 -1
- package/dist/apps/chat-ui/assets/{dist-D2N4-LIc.js → dist-CyyISotB.js} +1 -1
- package/dist/apps/chat-ui/assets/{dist-CUqpST5w.js → dist-DFbnFNpX.js} +1 -1
- package/dist/apps/chat-ui/assets/{dist-CspjOeBj.js → dist-DGLWQLX8.js} +1 -1
- package/dist/apps/chat-ui/assets/{dist-B7bbI3Qz.js → dist-DfcIkFSN.js} +1 -1
- package/dist/apps/chat-ui/assets/{dist-v4pjHlB7.js → dist-sKDHTwaT.js} +1 -1
- package/dist/apps/chat-ui/assets/{dist-D9L4MSRF.js → dist-y9D6la48.js} +1 -1
- package/dist/apps/chat-ui/assets/index-C25VYnyb.css +1 -0
- package/dist/apps/chat-ui/assets/index-CUkuvI3v.js +165 -0
- package/dist/apps/chat-ui/assets/pwa-images/android/launchericon-144x144.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/android/launchericon-192x192.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/android/launchericon-48x48.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/android/launchericon-512x512.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/android/launchericon-72x72.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/android/launchericon-96x96.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/ios/100.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/ios/1024.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/ios/114.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/ios/120.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/ios/128.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/ios/144.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/ios/152.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/ios/16.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/ios/167.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/ios/180.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/ios/192.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/ios/20.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/ios/256.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/ios/29.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/ios/32.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/ios/40.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/ios/50.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/ios/512.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/ios/57.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/ios/58.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/ios/60.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/ios/64.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/ios/72.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/ios/76.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/ios/80.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/ios/87.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/LargeTile.scale-100.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/LargeTile.scale-125.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/LargeTile.scale-150.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/LargeTile.scale-200.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/LargeTile.scale-400.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/SmallTile.scale-100.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/SmallTile.scale-125.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/SmallTile.scale-150.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/SmallTile.scale-200.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/SmallTile.scale-400.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/SplashScreen.scale-100.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/SplashScreen.scale-125.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/SplashScreen.scale-150.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/SplashScreen.scale-200.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/SplashScreen.scale-400.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square150x150Logo.scale-100.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square150x150Logo.scale-125.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square150x150Logo.scale-150.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square150x150Logo.scale-200.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square150x150Logo.scale-400.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-lightunplated_targetsize-16.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-lightunplated_targetsize-20.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-lightunplated_targetsize-24.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-lightunplated_targetsize-256.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-lightunplated_targetsize-30.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-lightunplated_targetsize-32.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-lightunplated_targetsize-36.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-lightunplated_targetsize-40.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-lightunplated_targetsize-44.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-lightunplated_targetsize-48.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-lightunplated_targetsize-60.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-lightunplated_targetsize-64.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-lightunplated_targetsize-72.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-lightunplated_targetsize-80.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-lightunplated_targetsize-96.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-unplated_targetsize-16.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-unplated_targetsize-20.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-unplated_targetsize-24.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-unplated_targetsize-256.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-unplated_targetsize-30.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-unplated_targetsize-32.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-unplated_targetsize-36.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-unplated_targetsize-40.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-unplated_targetsize-44.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-unplated_targetsize-48.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-unplated_targetsize-60.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-unplated_targetsize-64.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-unplated_targetsize-72.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-unplated_targetsize-80.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.altform-unplated_targetsize-96.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.scale-100.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.scale-125.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.scale-150.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.scale-200.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.scale-400.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.targetsize-16.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.targetsize-20.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.targetsize-24.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.targetsize-256.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.targetsize-30.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.targetsize-32.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.targetsize-36.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.targetsize-40.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.targetsize-44.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.targetsize-48.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.targetsize-60.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.targetsize-64.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.targetsize-72.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.targetsize-80.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Square44x44Logo.targetsize-96.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/StoreLogo.scale-100.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/StoreLogo.scale-125.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/StoreLogo.scale-150.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/StoreLogo.scale-200.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/StoreLogo.scale-400.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Wide310x150Logo.scale-100.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Wide310x150Logo.scale-125.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Wide310x150Logo.scale-150.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Wide310x150Logo.scale-200.png +0 -0
- package/dist/apps/chat-ui/assets/pwa-images/windows/Wide310x150Logo.scale-400.png +0 -0
- package/dist/apps/chat-ui/index.html +8 -3
- package/dist/apps/chat-ui/manifest.webmanifest +25 -0
- package/dist/apps/chat-ui/sw.js +41 -0
- package/dist/apps/cli-ui/InkSessionApp.js +1218 -0
- package/dist/apps/cli-ui/InkTerminalLine.js +53 -0
- package/dist/apps/cli-ui/InkTerminalRow.js +304 -0
- package/dist/apps/cli-ui/InkTerminalView.js +25 -0
- package/dist/apps/cli-ui/cliSessionsCommand.js +232 -0
- package/dist/apps/cli-ui/index.js +8 -0
- package/dist/apps/cli-ui/inkColors.js +67 -0
- package/dist/apps/cli-ui/inkJson.js +244 -0
- package/dist/apps/cli-ui/inkMarkdown.js +122 -0
- package/dist/apps/context-files-ui/assets/{dist-DFi2YGux.js → dist-BOiGdrG-.js} +1 -1
- package/dist/apps/context-files-ui/assets/{dist-DyfSeBMu.js → dist-DK01b7x4.js} +1 -1
- package/dist/apps/context-files-ui/assets/{dist-CwbH_3RN.js → dist-DPG9jOQ-.js} +1 -1
- package/dist/apps/context-files-ui/assets/{dist-dTBsFYAl.js → dist-Dp5AH00p.js} +1 -1
- package/dist/apps/context-files-ui/assets/{dist-CxRLRmMx.js → dist-DqYw0LH7.js} +1 -1
- package/dist/apps/context-files-ui/assets/{dist-MyZgX9K2.js → dist-TF5iO5ML.js} +1 -1
- package/dist/apps/context-files-ui/assets/{dist-DQXzt2Ng.js → dist-TbjAhles.js} +1 -1
- package/dist/apps/context-files-ui/assets/{dist-YwR9dpb-.js → dist-ZsBbt0uY.js} +1 -1
- package/dist/apps/context-files-ui/assets/{dist-CKQF1zEu.js → dist-kmsvtHkH.js} +1 -1
- package/dist/apps/context-files-ui/assets/{dist-BJW3917N.js → dist-vnd7PMu3.js} +1 -1
- package/dist/apps/context-files-ui/assets/{index-BwRDoHMC.css → index-B92tL3Pp.css} +1 -1
- package/dist/apps/context-files-ui/assets/{index-GwvjXytt.js → index-BhAWD3dv.js} +2 -2
- package/dist/apps/context-files-ui/index.html +2 -2
- package/dist/auth/better-auth.js +2 -1
- package/dist/auth/login-actions.js +251 -0
- package/dist/auth/openai-codex-usage.js +147 -0
- package/dist/bin/pibo.js +0 -0
- package/dist/bin/rg.js +15 -0
- package/dist/cli-session/fakeSessionSource.js +804 -0
- package/dist/cli-session/index.js +3 -0
- package/dist/cli-session/localSessionSource.js +1144 -0
- package/dist/cli-session/sessionSource.js +13 -0
- package/dist/cli.js +142 -14
- package/dist/compute/cli.js +415 -0
- package/dist/compute/docker.js +827 -0
- package/dist/compute/resource-health.js +333 -0
- package/dist/compute/resource-policy.js +98 -0
- package/dist/config/config.js +9 -5
- package/dist/core/context-build.js +677 -0
- package/dist/core/model-defaults.js +51 -9
- package/dist/core/pibo-home.js +8 -0
- package/dist/core/profiles.js +48 -0
- package/dist/core/provider-telemetry.js +222 -0
- package/dist/core/routed-session.js +441 -47
- package/dist/core/runtime-telemetry.js +853 -0
- package/dist/core/runtime.js +103 -15
- package/dist/core/session-errors.js +47 -0
- package/dist/core/session-model.js +39 -0
- package/dist/core/session-router.js +292 -62
- package/dist/core/shared-app.js +17 -0
- package/dist/core/skill-expansion.js +43 -0
- package/dist/core/system-prompt-template.js +9 -9
- package/dist/core/telemetry-staleness.js +128 -0
- package/dist/core/test-output-compaction.js +145 -0
- package/dist/core/user-settings.js +73 -0
- package/dist/cron/channel.js +28 -0
- package/dist/cron/cli.js +230 -0
- package/dist/cron/plugin.js +11 -0
- package/dist/cron/schedule.js +214 -0
- package/dist/cron/service.js +177 -0
- package/dist/cron/store.js +349 -0
- package/dist/cron/types.js +1 -0
- package/dist/data/cli.js +184 -0
- package/dist/data/event-log.js +106 -0
- package/dist/data/final-app-space-cutover-migration.js +728 -0
- package/dist/data/ingest-service.js +389 -0
- package/dist/data/message-store.js +62 -0
- package/dist/data/navigation-store.js +75 -0
- package/dist/data/observation-store.js +46 -0
- package/dist/data/payload-store.js +144 -0
- package/dist/data/pibo-store.js +59 -0
- package/dist/data/schema.js +434 -0
- package/dist/data/session-store.js +63 -0
- package/dist/data/shared-app-migration.js +757 -0
- package/dist/data/sqlite-schema.js +12 -0
- package/dist/data/telemetry-preview.js +65 -0
- package/dist/data/telemetry-queries.js +212 -0
- package/dist/data/telemetry-retention.js +50 -0
- package/dist/data/telemetry-rows.js +158 -0
- package/dist/data/telemetry.js +357 -0
- package/dist/debug/delta-compaction.js +99 -0
- package/dist/debug/detail-format.js +86 -0
- package/dist/debug/events.js +149 -29
- package/dist/debug/failures.js +162 -0
- package/dist/debug/index.js +655 -30
- package/dist/debug/messages.js +185 -0
- package/dist/debug/next-commands.js +6 -0
- package/dist/debug/payloads.js +123 -0
- package/dist/debug/pty.js +924 -0
- package/dist/debug/session.js +45 -15
- package/dist/debug/sql.js +1 -1
- package/dist/debug/stores.js +18 -13
- package/dist/debug/summary.js +72 -0
- package/dist/debug/telemetry.js +649 -0
- package/dist/debug/tools.js +168 -0
- package/dist/debug/trace-render-check.js +151 -0
- package/dist/debug/trace.js +152 -27
- package/dist/debug/web-artifacts.js +63 -0
- package/dist/debug/web-options.js +313 -0
- package/dist/debug/web-render-analysis.js +310 -0
- package/dist/debug/web-snapshot-browser-scripts.js +303 -0
- package/dist/debug/web-streaming-benchmark-analysis.js +605 -0
- package/dist/debug/web-streaming-browser-library.js +928 -0
- package/dist/debug/web-streaming-browser-scripts.js +242 -0
- package/dist/debug/web-streaming-provider-telemetry.js +194 -0
- package/dist/debug/web-streaming-report.js +493 -0
- package/dist/debug/web-streaming-types.js +1 -0
- package/dist/debug/web.js +574 -0
- package/dist/gateway/backup.js +83 -0
- package/dist/gateway/cli.js +511 -0
- package/dist/gateway/fallback.js +155 -0
- package/dist/gateway/pidfile.js +84 -0
- package/dist/gateway/protocol.js +16 -0
- package/dist/gateway/server.js +172 -17
- package/dist/gateway/tool.js +54 -51
- package/dist/gateway/web.js +74 -2
- package/dist/index.js +3 -1
- package/dist/local/client.js +3 -3
- package/dist/local/extension.js +8 -5
- package/dist/plugins/builtin.js +251 -49
- package/dist/plugins/chat-vscode-web.js +28 -0
- package/dist/plugins/codex-compat.js +0 -41
- package/dist/plugins/context-files.js +98 -18
- package/dist/plugins/dev-auth.js +124 -0
- package/dist/plugins/native-tooling.js +15 -0
- package/dist/plugins/registry.js +49 -1
- package/dist/plugins/web-annotations.js +27 -0
- package/dist/providers/minimax.js +70 -0
- package/dist/providers/openai-compat.js +48 -0
- package/dist/ralph/channel.js +8 -0
- package/dist/ralph/cli.js +152 -0
- package/dist/ralph/plugin.js +14 -0
- package/dist/ralph/service.js +271 -0
- package/dist/ralph/stopping.js +151 -0
- package/dist/ralph/store.js +450 -0
- package/dist/ralph/templates.js +200 -0
- package/dist/ralph/types.js +1 -0
- package/dist/reliability/store.js +42 -26
- package/dist/runs/registry.js +72 -35
- package/dist/session-ui/commandCatalog.js +193 -0
- package/dist/session-ui/commandResults.js +95 -0
- package/dist/session-ui/index.js +7 -0
- package/dist/session-ui/ownerViewModel.js +27 -0
- package/dist/session-ui/roomSessionViewModel.js +69 -0
- package/dist/session-ui/statusViewModel.js +127 -0
- package/dist/session-ui/terminalCards.js +210 -0
- package/dist/session-ui/terminalRows.js +937 -0
- package/dist/session-ui/terminalValue.js +45 -0
- package/dist/sessions/pibo-data-store.js +178 -0
- package/dist/sessions/sqlite-store.js +78 -12
- package/dist/sessions/store.js +11 -4
- package/dist/sessions/workflow-session-kind.js +20 -0
- package/dist/setup/cli.js +567 -0
- package/dist/shared/trace-async-agent-runs.js +127 -0
- package/dist/shared/trace-engine.js +96 -0
- package/dist/shared/trace-event-projection.js +679 -0
- package/dist/shared/trace-live-reducer.js +191 -0
- package/dist/shared/trace-nodes.js +76 -0
- package/dist/shared/trace-order.js +11 -10
- package/dist/shared/trace-patch-nodes.js +83 -0
- package/dist/shared/trace-run-notifications.js +69 -0
- package/dist/shared/trace-subagent-links.js +46 -0
- package/dist/shared/trace-transcript.js +303 -0
- package/dist/shared/trace-types.js +1 -0
- package/dist/shared-app.js +4 -0
- package/dist/signals/aggregate.js +65 -0
- package/dist/signals/events.js +1 -0
- package/dist/signals/projector.js +158 -0
- package/dist/signals/registry.js +513 -0
- package/dist/signals/store.js +1 -0
- package/dist/signals/types.js +1 -0
- package/dist/skills/cli.js +117 -0
- package/dist/tools/agent-browser-leases.js +219 -0
- package/dist/tools/agent-browser-wrapper.js +99 -0
- package/dist/tools/browser-pool.js +623 -0
- package/dist/tools/browser-use-cdp.js +56 -4
- package/dist/tools/browser-use-leases.js +215 -37
- package/dist/tools/browser-use-wrapper.js +508 -65
- package/dist/tools/cdp-client.js +189 -0
- package/dist/tools/guides.js +203 -4
- package/dist/tools/index.js +666 -16
- package/dist/tools/npm-runtime.js +136 -0
- package/dist/tools/registry.js +107 -8
- package/dist/tools/runtime/index.js +3 -0
- package/dist/tools/runtime/node-backend.js +225 -0
- package/dist/tools/runtime/node-worker-source.js +206 -0
- package/dist/tools/runtime/python-backend.js +227 -0
- package/dist/tools/runtime/python-worker-source.js +178 -0
- package/dist/tools/runtime/registry.js +255 -0
- package/dist/tools/runtime/tool.js +168 -0
- package/dist/tools/runtime/types.js +1 -0
- package/dist/tools/web-search.js +2 -1
- package/dist/user-skills/installer.js +39 -36
- package/dist/user-skills/store.js +50 -11
- package/dist/web/auth.js +5 -1
- package/dist/web/channel.js +86 -0
- package/dist/web/http.js +79 -14
- package/dist/web-annotations/api.js +348 -0
- package/dist/web-annotations/attachments.js +201 -0
- package/dist/web-annotations/cdp.js +1107 -0
- package/dist/web-annotations/index.js +7 -0
- package/dist/web-annotations/store.js +407 -0
- package/dist/web-annotations/tools.js +350 -0
- package/dist/web-annotations/types.js +34 -0
- package/dist/web-annotations/validation.js +288 -0
- package/docs/README.md +23 -0
- package/docs/ops/install-developer-host.md +112 -0
- package/docs/ops/install-user-host.md +76 -0
- package/docs/ops/upgrade-user-to-developer-host.md +69 -0
- package/package.json +24 -10
- package/skills/builtin/pi-agent-harness/SKILL.md +24 -24
- package/skills/builtin/pibo-docker-system/SKILL.md +170 -0
- package/skills/builtin/pibo-spec-writing/SKILL.md +330 -0
- package/skills/builtin/prd/SKILL.md +143 -0
- package/skills/builtin/ralph-loop/SKILL.md +359 -0
- package/skills/builtin/ralph-prd-json/SKILL.md +123 -0
- package/skills/builtin/skill-creator/LICENSE.txt +202 -0
- package/skills/builtin/skill-creator/SKILL.md +513 -0
- package/skills/builtin/skill-creator/agents/analyzer.md +274 -0
- package/skills/builtin/skill-creator/agents/comparator.md +202 -0
- package/skills/builtin/skill-creator/agents/grader.md +223 -0
- package/skills/builtin/skill-creator/assets/eval_review.html +146 -0
- package/skills/builtin/skill-creator/eval-viewer/generate_review.py +471 -0
- package/skills/builtin/skill-creator/eval-viewer/viewer.html +1325 -0
- package/skills/builtin/skill-creator/references/schemas.md +430 -0
- package/skills/builtin/skill-creator/scripts/__init__.py +0 -0
- package/skills/builtin/skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/skills/builtin/skill-creator/scripts/generate_report.py +326 -0
- package/skills/builtin/skill-creator/scripts/improve_description.py +247 -0
- package/skills/builtin/skill-creator/scripts/package_skill.py +136 -0
- package/skills/builtin/skill-creator/scripts/quick_validate.py +103 -0
- package/skills/builtin/skill-creator/scripts/run_eval.py +310 -0
- package/skills/builtin/skill-creator/scripts/run_loop.py +328 -0
- package/skills/builtin/skill-creator/scripts/utils.py +47 -0
- package/skills/builtin/web-annotations/SKILL.md +93 -0
- package/dist/apps/chat-ui/assets/index-D2Qxambd.js +0 -151
- package/dist/apps/chat-ui/assets/index-DXx368XK.css +0 -1
- package/dist/env.js +0 -32
- package/dist/plugins/core-tools.js +0 -94
- package/dist/plugins/example.js +0 -67
- package/dist/plugins/remote-agent.js +0 -9
- package/dist/remote/channel.js +0 -176
- package/dist/remote/client.js +0 -92
- package/dist/remote/examples/tui-controller.js +0 -263
- package/dist/remote/protocol.js +0 -55
- package/dist/remote/session-client.js +0 -189
- package/dist/sessions/bindings.js +0 -41
package/dist/local/extension.js
CHANGED
|
@@ -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
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
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)) {
|
package/dist/plugins/builtin.js
CHANGED
|
@@ -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
|
|
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: "
|
|
123
|
+
path: builtinSkillPath("pi-agent-harness"),
|
|
67
124
|
kind: "builtin",
|
|
68
125
|
});
|
|
69
|
-
api.
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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.
|
|
92
|
-
name: "pibo-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
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:
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
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
|
-
|
|
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: "
|
|
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.
|
|
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
|
|
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
|
});
|