@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.
- package/README.md +106 -250
- 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 +42 -5
- 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 +47 -0
- 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 +3168 -1811
- 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-CI0Xj2Cp.js → dist-B4lw9z4F.js} +1 -1
- package/dist/apps/chat-ui/assets/{dist-aMr2VYOu.js → dist-BbTaHWON.js} +1 -1
- package/dist/apps/chat-ui/assets/{dist-u2OzzOTm.js → dist-BcT_c1EJ.js} +1 -1
- package/dist/apps/chat-ui/assets/{dist-Di1ScJ22.js → dist-CGINd7XU.js} +1 -1
- package/dist/apps/chat-ui/assets/{dist-wiRpAHIv.js → dist-CrBzZkUp.js} +1 -1
- package/dist/apps/chat-ui/assets/{dist-CaNOvqMY.js → dist-CyyISotB.js} +1 -1
- package/dist/apps/chat-ui/assets/{dist-zgYUl2B-.js → dist-DFbnFNpX.js} +1 -1
- package/dist/apps/chat-ui/assets/{dist-CNlhGq5i.js → dist-DGLWQLX8.js} +1 -1
- package/dist/apps/chat-ui/assets/{dist-BGxHKHPX.js → dist-DfcIkFSN.js} +1 -1
- package/dist/apps/chat-ui/assets/{dist-DrM-H3e1.js → dist-sKDHTwaT.js} +1 -1
- package/dist/apps/chat-ui/assets/{dist-DpmEro5R.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 +174 -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 +252 -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 +66 -2
- 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 +214 -0
- package/dist/user-skills/manager.js +35 -0
- package/dist/user-skills/store.js +267 -0
- package/dist/user-skills/types.js +1 -0
- 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/{.codex/skills → 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-B_E935fP.js +0 -151
- package/dist/apps/chat-ui/assets/index-Dk-opWl3.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/{.codex/skills → skills/builtin}/pi-agent-harness/agents/openai.yaml +0 -0
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,57 +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"),
|
|
124
|
+
kind: "builtin",
|
|
67
125
|
});
|
|
68
|
-
api.
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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.
|
|
91
|
-
name: "pibo-
|
|
92
|
-
|
|
93
|
-
|
|
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:
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
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
|
-
|
|
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: "
|
|
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.
|
|
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
|
|
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
|
});
|