@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
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
export const DEFAULT_CDP_URL = "http://127.0.0.1:56663";
|
|
2
|
+
export const DEFAULT_CDP_TIMEOUT_MS = 2_500;
|
|
3
|
+
export class CdpClient {
|
|
4
|
+
webSocketUrl;
|
|
5
|
+
nextId = 0;
|
|
6
|
+
pending = new Map();
|
|
7
|
+
socket;
|
|
8
|
+
constructor(webSocketUrl) {
|
|
9
|
+
this.webSocketUrl = webSocketUrl;
|
|
10
|
+
}
|
|
11
|
+
connect(timeoutMs = 3_000) {
|
|
12
|
+
return new Promise((resolve, reject) => {
|
|
13
|
+
const socket = new WebSocket(this.webSocketUrl);
|
|
14
|
+
this.socket = socket;
|
|
15
|
+
let settled = false;
|
|
16
|
+
const timer = setTimeout(() => fail(new Error("Timed out connecting to CDP target")), timeoutMs);
|
|
17
|
+
const settle = () => {
|
|
18
|
+
if (settled)
|
|
19
|
+
return false;
|
|
20
|
+
settled = true;
|
|
21
|
+
clearTimeout(timer);
|
|
22
|
+
return true;
|
|
23
|
+
};
|
|
24
|
+
const succeed = () => {
|
|
25
|
+
if (settle())
|
|
26
|
+
resolve();
|
|
27
|
+
};
|
|
28
|
+
const fail = (error) => {
|
|
29
|
+
if (settle())
|
|
30
|
+
reject(error);
|
|
31
|
+
};
|
|
32
|
+
socket.addEventListener("open", succeed);
|
|
33
|
+
socket.addEventListener("message", (event) => this.handleMessage(String(event.data)));
|
|
34
|
+
socket.addEventListener("error", () => fail(new Error(`CDP WebSocket error connecting to ${this.webSocketUrl}`)));
|
|
35
|
+
socket.addEventListener("close", () => {
|
|
36
|
+
for (const [id, pending] of this.pending) {
|
|
37
|
+
clearTimeout(pending.timer);
|
|
38
|
+
pending.reject(new Error("CDP target closed"));
|
|
39
|
+
this.pending.delete(id);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
send(method, params, timeoutMs = 10_000) {
|
|
45
|
+
if (!this.socket || this.socket.readyState !== WebSocket.OPEN)
|
|
46
|
+
throw new Error("CDP target is not connected");
|
|
47
|
+
const id = ++this.nextId;
|
|
48
|
+
const payload = params ? { id, method, params } : { id, method };
|
|
49
|
+
const promise = new Promise((resolve, reject) => {
|
|
50
|
+
const timer = setTimeout(() => {
|
|
51
|
+
this.pending.delete(id);
|
|
52
|
+
reject(new Error(`Timed out waiting for CDP method ${method}`));
|
|
53
|
+
}, timeoutMs);
|
|
54
|
+
this.pending.set(id, { resolve, reject, timer });
|
|
55
|
+
});
|
|
56
|
+
this.socket.send(JSON.stringify(payload));
|
|
57
|
+
return promise;
|
|
58
|
+
}
|
|
59
|
+
async evaluate(expression, timeoutMs = 10_000) {
|
|
60
|
+
const response = await this.send("Runtime.evaluate", {
|
|
61
|
+
expression,
|
|
62
|
+
awaitPromise: true,
|
|
63
|
+
returnByValue: true,
|
|
64
|
+
userGesture: true,
|
|
65
|
+
}, timeoutMs);
|
|
66
|
+
if (response.exceptionDetails)
|
|
67
|
+
throw new Error(`Browser evaluation failed: ${JSON.stringify(response.exceptionDetails)}`);
|
|
68
|
+
return response.result?.value;
|
|
69
|
+
}
|
|
70
|
+
close() {
|
|
71
|
+
try {
|
|
72
|
+
this.socket?.close();
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// ignore close races
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
handleMessage(raw) {
|
|
79
|
+
let message;
|
|
80
|
+
try {
|
|
81
|
+
message = JSON.parse(raw);
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
if (typeof message.id !== "number")
|
|
87
|
+
return;
|
|
88
|
+
const pending = this.pending.get(message.id);
|
|
89
|
+
if (!pending)
|
|
90
|
+
return;
|
|
91
|
+
clearTimeout(pending.timer);
|
|
92
|
+
this.pending.delete(message.id);
|
|
93
|
+
if (message.error) {
|
|
94
|
+
pending.reject(new Error(message.error.message ?? JSON.stringify(message.error)));
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
pending.resolve(message.result);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
export function normalizeCdpUrlSync(value) {
|
|
101
|
+
return value.replace(/\/+$/, "");
|
|
102
|
+
}
|
|
103
|
+
export async function fetchWithTimeout(url, timeoutMs, init = {}) {
|
|
104
|
+
const controller = new AbortController();
|
|
105
|
+
const timeout = setTimeout(() => controller.abort(), timeoutMs);
|
|
106
|
+
try {
|
|
107
|
+
return await fetch(url, { ...init, signal: controller.signal });
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
const reason = error instanceof Error ? error.message : String(error);
|
|
111
|
+
throw new Error(`Failed to fetch ${url}: ${reason}`);
|
|
112
|
+
}
|
|
113
|
+
finally {
|
|
114
|
+
clearTimeout(timeout);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
export async function listCdpTargets(options = {}) {
|
|
118
|
+
const cdpUrl = normalizeCdpUrlSync(options.cdpUrl ?? DEFAULT_CDP_URL);
|
|
119
|
+
try {
|
|
120
|
+
const response = await fetchWithTimeout(`${cdpUrl}/json/list`, options.timeoutMs ?? DEFAULT_CDP_TIMEOUT_MS);
|
|
121
|
+
if (!response.ok) {
|
|
122
|
+
throw new Error(`Chrome target discovery responded with HTTP ${response.status} ${response.statusText}`);
|
|
123
|
+
}
|
|
124
|
+
const payload = await response.json();
|
|
125
|
+
if (!Array.isArray(payload))
|
|
126
|
+
throw new Error("Chrome target discovery returned invalid JSON");
|
|
127
|
+
return payload.map(normalizeCdpTarget);
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
if (error instanceof Error && error.message.startsWith("Failed to fetch")) {
|
|
131
|
+
throw new Error(`CDP endpoint ${cdpUrl} is unreachable. Is Chrome running with remote debugging? (${error.message})`);
|
|
132
|
+
}
|
|
133
|
+
throw error;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
export async function openCdpTarget(url, options = {}) {
|
|
137
|
+
const cdpUrl = normalizeCdpUrlSync(options.cdpUrl ?? DEFAULT_CDP_URL);
|
|
138
|
+
const timeoutMs = options.timeoutMs ?? DEFAULT_CDP_TIMEOUT_MS;
|
|
139
|
+
const endpoint = `${cdpUrl}/json/new?${encodeURIComponent(url)}`;
|
|
140
|
+
try {
|
|
141
|
+
let response = await fetchWithTimeout(endpoint, timeoutMs, { method: "PUT" });
|
|
142
|
+
if (response.status === 404 || response.status === 405) {
|
|
143
|
+
response = await fetchWithTimeout(endpoint, timeoutMs);
|
|
144
|
+
}
|
|
145
|
+
if (!response.ok)
|
|
146
|
+
throw new Error(`Chrome target creation responded with HTTP ${response.status} ${response.statusText}`);
|
|
147
|
+
const payload = await response.json();
|
|
148
|
+
return normalizeCdpTarget(payload);
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
if (error instanceof Error && error.message.startsWith("Failed to fetch")) {
|
|
152
|
+
throw new Error(`CDP endpoint ${cdpUrl} is unreachable. Is Chrome running with remote debugging? (${error.message})`);
|
|
153
|
+
}
|
|
154
|
+
throw error;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
export function findCdpTarget(targets, targetIdOrUrl) {
|
|
158
|
+
return targets.find((target) => target.id === targetIdOrUrl || target.url === targetIdOrUrl || target.title === targetIdOrUrl || target.webSocketDebuggerUrl === targetIdOrUrl);
|
|
159
|
+
}
|
|
160
|
+
export async function connectCdpTarget(target, timeoutMs = 3_000) {
|
|
161
|
+
if (!target.webSocketDebuggerUrl)
|
|
162
|
+
throw new Error(`CDP target ${target.id || target.url} is not attachable (no webSocketDebuggerUrl)`);
|
|
163
|
+
const client = new CdpClient(target.webSocketDebuggerUrl);
|
|
164
|
+
try {
|
|
165
|
+
await client.connect(timeoutMs);
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
const reason = error instanceof Error ? error.message : String(error);
|
|
169
|
+
throw new Error(`Failed to connect to CDP target ${target.id || target.url}: ${reason}`);
|
|
170
|
+
}
|
|
171
|
+
return client;
|
|
172
|
+
}
|
|
173
|
+
function normalizeCdpTarget(target) {
|
|
174
|
+
const record = target && typeof target === "object" && !Array.isArray(target) ? target : {};
|
|
175
|
+
return {
|
|
176
|
+
id: stringValue(record.id),
|
|
177
|
+
type: stringValue(record.type),
|
|
178
|
+
title: stringValue(record.title),
|
|
179
|
+
url: stringValue(record.url),
|
|
180
|
+
webSocketDebuggerUrl: optionalStringValue(record.webSocketDebuggerUrl),
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
function stringValue(value) {
|
|
184
|
+
return typeof value === "string" ? value : "";
|
|
185
|
+
}
|
|
186
|
+
function optionalStringValue(value) {
|
|
187
|
+
const text = stringValue(value);
|
|
188
|
+
return text || undefined;
|
|
189
|
+
}
|
package/dist/tools/guides.js
CHANGED
|
@@ -1,3 +1,201 @@
|
|
|
1
|
+
export const RALPH_GUIDE = {
|
|
2
|
+
name: 'ralph',
|
|
3
|
+
description: 'Create, inspect, and control Pibo Ralph jobs from the CLI.',
|
|
4
|
+
content: `---
|
|
5
|
+
name: ralph
|
|
6
|
+
description: Creates and controls continuous Pibo agent jobs for implementation loops, bug fixing, validation, and PRD/story execution.
|
|
7
|
+
allowed-tools: Bash(pibo:*), Bash(npm:*)
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Ralph CLI Tool
|
|
11
|
+
|
|
12
|
+
Ralph runs repeatable Pibo agent jobs. Use it when the user wants an implementation loop, PRD/story execution, bug fixing, validation, or a background job that can be started, stopped, inspected, and resumed.
|
|
13
|
+
|
|
14
|
+
## Required Context
|
|
15
|
+
|
|
16
|
+
Ralph jobs are app-global. Choose either:
|
|
17
|
+
|
|
18
|
+
- room target: \`--room <current-room-id>\`
|
|
19
|
+
- shared default target: \`--default-chat\`
|
|
20
|
+
|
|
21
|
+
Inside the Pibo source repo, use \`npm run --silent dev -- ralph ...\` for uninstalled local changes. For the installed CLI, use \`pibo ralph ...\`.
|
|
22
|
+
|
|
23
|
+
## Discover Templates
|
|
24
|
+
|
|
25
|
+
\`\`\`bash
|
|
26
|
+
pibo ralph templates
|
|
27
|
+
pibo ralph templates --json
|
|
28
|
+
pibo tools guide ralph ralph
|
|
29
|
+
\`\`\`
|
|
30
|
+
|
|
31
|
+
Good defaults:
|
|
32
|
+
|
|
33
|
+
- \`prd-single-story-standard\`: one failing PRD story per run; promise-complete stop policy.
|
|
34
|
+
- \`prd-batch-stories\`: multiple PRD stories in priority order; commit after each story.
|
|
35
|
+
- \`single-run-objective\`: one focused non-PRD objective; stops after one completed run attempt.
|
|
36
|
+
|
|
37
|
+
## Create Jobs
|
|
38
|
+
|
|
39
|
+
Create stopped, inspect, then start:
|
|
40
|
+
|
|
41
|
+
\`\`\`bash
|
|
42
|
+
pibo ralph add \\
|
|
43
|
+
--room "<room-id>" \\
|
|
44
|
+
--template prd-single-story-standard \\
|
|
45
|
+
--name "Implement story X" \\
|
|
46
|
+
--prompt "Implement exactly one failing PRD story, test it, and commit." \\
|
|
47
|
+
--json
|
|
48
|
+
|
|
49
|
+
pibo ralph start <job-id>
|
|
50
|
+
\`\`\`
|
|
51
|
+
|
|
52
|
+
Create and start immediately:
|
|
53
|
+
|
|
54
|
+
\`\`\`bash
|
|
55
|
+
pibo ralph add \\
|
|
56
|
+
--room "<room-id>" \\
|
|
57
|
+
--template single-run-objective \\
|
|
58
|
+
--name "Fix bug Y" \\
|
|
59
|
+
--prompt "Reproduce and fix bug Y, then run focused tests." \\
|
|
60
|
+
--start \\
|
|
61
|
+
--json
|
|
62
|
+
\`\`\`
|
|
63
|
+
|
|
64
|
+
Explicit options override template fields.
|
|
65
|
+
|
|
66
|
+
## Inspect and Debug
|
|
67
|
+
|
|
68
|
+
\`\`\`bash
|
|
69
|
+
pibo ralph status --json
|
|
70
|
+
pibo ralph list --all --json
|
|
71
|
+
pibo ralph runs --job <job-id> --json
|
|
72
|
+
pibo ralph policy show <job-id> --json
|
|
73
|
+
\`\`\`
|
|
74
|
+
|
|
75
|
+
Use \`runs --json\` to debug failures, session ids, completion state, and recent activity. Prefer bounded JSON output when another agent will parse it.
|
|
76
|
+
|
|
77
|
+
## Control Jobs
|
|
78
|
+
|
|
79
|
+
\`\`\`bash
|
|
80
|
+
pibo ralph stop <job-id> # finish current session, then stop
|
|
81
|
+
pibo ralph cancel <job-id> # abort current session and stop
|
|
82
|
+
pibo ralph edit <job-id> --prompt "Updated objective" --json
|
|
83
|
+
pibo ralph remove <job-id>
|
|
84
|
+
\`\`\`
|
|
85
|
+
|
|
86
|
+
Prefer \`stop\` for normal shutdown and \`cancel\` only when the active run is stuck or unsafe.
|
|
87
|
+
|
|
88
|
+
## Safety
|
|
89
|
+
|
|
90
|
+
1. Do not start many Ralph jobs unless the user asked for parallel work.
|
|
91
|
+
2. Use templates first; avoid ad-hoc long prompts when a preset fits.
|
|
92
|
+
3. Inspect with \`list --json\` and \`runs --json\` before editing or canceling an unknown job.
|
|
93
|
+
4. If working in the source repo before install, use \`npm run --silent dev -- ralph ...\`.
|
|
94
|
+
`,
|
|
95
|
+
};
|
|
96
|
+
export const AGENT_BROWSER_GUIDE = {
|
|
97
|
+
name: 'agent-browser',
|
|
98
|
+
description: 'Ref-based browser automation with the Agent Browser CLI.',
|
|
99
|
+
content: `---
|
|
100
|
+
name: agent-browser
|
|
101
|
+
description: Fast native browser automation CLI for AI agents. Use when you need to open pages, inspect snapshots, click refs, fill fields, and keep browser state under a Pibo-owned tool home.
|
|
102
|
+
allowed-tools: Bash(agent-browser:*)
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
# Browser Automation with Agent Browser
|
|
106
|
+
|
|
107
|
+
Agent Browser uses refs from interactive snapshots. Inspect first, act on refs, then inspect again after navigation or DOM changes.
|
|
108
|
+
|
|
109
|
+
## Prerequisites
|
|
110
|
+
|
|
111
|
+
Initialize one shell with the Pibo tool environment:
|
|
112
|
+
|
|
113
|
+
\`\`\`bash
|
|
114
|
+
eval "$(pibo tools env agent-browser)"
|
|
115
|
+
agent-browser doctor --offline --quick
|
|
116
|
+
\`\`\`
|
|
117
|
+
|
|
118
|
+
Inside the Pibo source repo, use \`eval "$(npm run --silent dev -- tools env agent-browser)"\`. The Pibo wrapper comes first on \`PATH\` and keeps state under \`AGENT_BROWSER_HOME\`, normally \`$PIBO_HOME/tools/agent-browser/home\`. For \`agent-browser@0.27.0\`, the wrapper also redirects \`HOME\` there by default so \`~/.agent-browser\` stays inside the tool home.
|
|
119
|
+
|
|
120
|
+
## Core Workflow
|
|
121
|
+
|
|
122
|
+
\`\`\`bash
|
|
123
|
+
agent-browser open <url>
|
|
124
|
+
agent-browser snapshot -i
|
|
125
|
+
agent-browser click @e1
|
|
126
|
+
agent-browser fill @e2 "text"
|
|
127
|
+
agent-browser snapshot -i
|
|
128
|
+
agent-browser get title
|
|
129
|
+
agent-browser close --all
|
|
130
|
+
\`\`\`
|
|
131
|
+
|
|
132
|
+
Re-run \`snapshot -i\` after navigation, submit, scroll, animation, or any DOM-changing action. Do not reuse stale refs.
|
|
133
|
+
|
|
134
|
+
## Sessions
|
|
135
|
+
|
|
136
|
+
Use sessions for separate browser tasks:
|
|
137
|
+
|
|
138
|
+
\`\`\`bash
|
|
139
|
+
agent-browser --session pibo-check open https://example.com
|
|
140
|
+
AGENT_BROWSER_SESSION=pibo-check agent-browser snapshot -i
|
|
141
|
+
agent-browser session list
|
|
142
|
+
\`\`\`
|
|
143
|
+
|
|
144
|
+
Keep mutating commands against the same session serial. Avoid parallel \`click\`, \`fill\`, \`open\`, or \`snapshot\` calls for one session.
|
|
145
|
+
|
|
146
|
+
## State and Profiles
|
|
147
|
+
|
|
148
|
+
The wrapper defaults browser-launching commands to a persistent Pibo profile:
|
|
149
|
+
|
|
150
|
+
\`\`\`bash
|
|
151
|
+
agent-browser open https://example.com
|
|
152
|
+
\`\`\`
|
|
153
|
+
|
|
154
|
+
Opt out when needed:
|
|
155
|
+
|
|
156
|
+
\`\`\`bash
|
|
157
|
+
agent-browser --fresh-profile open https://example.com
|
|
158
|
+
agent-browser --profile /path/to/profile open https://example.com
|
|
159
|
+
agent-browser --session-name saved-check open https://example.com
|
|
160
|
+
\`\`\`
|
|
161
|
+
|
|
162
|
+
Treat profiles, saved states, auth vaults, cookies, and headers as secrets. Do not print or copy their contents into chat.
|
|
163
|
+
|
|
164
|
+
## Authenticated Chat Web Work
|
|
165
|
+
|
|
166
|
+
Prefer isolated leases when more than one agent may use authenticated Chat Web:
|
|
167
|
+
|
|
168
|
+
\`\`\`bash
|
|
169
|
+
eval "$(pibo tools agent-browser lease acquire --app pibo-chat --holder "$USER")"
|
|
170
|
+
agent-browser open http://4788.192.168.0.204.sslip.io/apps/chat
|
|
171
|
+
agent-browser snapshot -i
|
|
172
|
+
\`\`\`
|
|
173
|
+
|
|
174
|
+
To prepare the reusable template profile:
|
|
175
|
+
|
|
176
|
+
\`\`\`bash
|
|
177
|
+
eval "$(pibo tools agent-browser auth-template env --app pibo-chat)"
|
|
178
|
+
agent-browser open http://4788.192.168.0.204.sslip.io/apps/chat
|
|
179
|
+
\`\`\`
|
|
180
|
+
|
|
181
|
+
Sign in once, close the browser, then acquire leases from the template.
|
|
182
|
+
|
|
183
|
+
For an already-open browser, inspect CDP targets:
|
|
184
|
+
|
|
185
|
+
\`\`\`bash
|
|
186
|
+
pibo tools agent-browser targets
|
|
187
|
+
pibo tools agent-browser attach-chat
|
|
188
|
+
\`\`\`
|
|
189
|
+
|
|
190
|
+
## Upstream Skills
|
|
191
|
+
|
|
192
|
+
Pibo keeps the full upstream skill out of default runtime context. Fetch it only when needed:
|
|
193
|
+
|
|
194
|
+
\`\`\`bash
|
|
195
|
+
agent-browser skills get core --full
|
|
196
|
+
\`\`\`
|
|
197
|
+
`,
|
|
198
|
+
};
|
|
1
199
|
export const BROWSER_USE_GUIDE = {
|
|
2
200
|
name: 'browser-use',
|
|
3
201
|
description: 'Local browser automation with the browser-use CLI.',
|
|
@@ -43,7 +241,7 @@ After navigation, submit, keypress navigation, major DOM changes, or scroll on c
|
|
|
43
241
|
\`\`\`bash
|
|
44
242
|
browser-use --headed open <url> # Starts Pibo-managed persistent PIBo Chrome via CDP
|
|
45
243
|
browser-use --fresh-profile open <url> # Starts a fresh temporary browser profile
|
|
46
|
-
browser-use connect
|
|
244
|
+
browser-use --connect open <url> # Connect to local Chrome via CDP (requires --remote-debugging-port)
|
|
47
245
|
browser-use --profile "Default" open <url> # Upstream profile mode; Browser Use may copy it to a temp dir
|
|
48
246
|
\`\`\`
|
|
49
247
|
|
|
@@ -110,7 +308,7 @@ browser-use close --all
|
|
|
110
308
|
For the Pibo Chat Web App, prefer an isolated authenticated lease when multiple agents may use the browser at the same time:
|
|
111
309
|
|
|
112
310
|
\`\`\`bash
|
|
113
|
-
eval "$(pibo tools browser-use lease acquire --app pibo-chat --
|
|
311
|
+
eval "$(pibo tools browser-use lease acquire --app pibo-chat --holder "$USER")"
|
|
114
312
|
browser-use state
|
|
115
313
|
\`\`\`
|
|
116
314
|
|
|
@@ -161,7 +359,7 @@ browser-use profile list
|
|
|
161
359
|
|
|
162
360
|
To intentionally use a real local Chrome user data directory instead of the Pibo-managed one, set \`PIBO_BROWSER_USE_CHROME_USER_DATA_DIR\` before starting the session.
|
|
163
361
|
|
|
164
|
-
If \`browser-use connect\` cannot find Chrome, ask the user whether they want to relaunch Chrome with remote debugging or use a managed Chromium profile.
|
|
362
|
+
If \`browser-use --connect\` cannot find Chrome, ask the user whether they want to relaunch Chrome with remote debugging or use a managed Chromium profile.
|
|
165
363
|
|
|
166
364
|
## Tips
|
|
167
365
|
|
|
@@ -178,6 +376,7 @@ If \`browser-use connect\` cannot find Chrome, ask the user whether they want to
|
|
|
178
376
|
11. \`select\` confirms the visible option text, while \`get value\` returns the underlying option value.
|
|
179
377
|
12. Avoid \`browser-use --version\`; this CLI does not support it.
|
|
180
378
|
13. Avoid \`extract\`; it is listed by the CLI but is not implemented in this version.
|
|
379
|
+
14. If Chrome fails to start with a "SingletonLock" error, the wrapper auto-detects and terminates stale Chrome processes holding the lock. Retry your command.
|
|
181
380
|
`,
|
|
182
381
|
};
|
|
183
382
|
export const REMOTE_BROWSER_GUIDE = {
|
|
@@ -220,7 +419,7 @@ After navigation, submit, keypress navigation, major DOM changes, or scroll on c
|
|
|
220
419
|
\`\`\`bash
|
|
221
420
|
browser-use open <url>
|
|
222
421
|
browser-use --headed open <url>
|
|
223
|
-
browser-use connect
|
|
422
|
+
browser-use --connect open <url>
|
|
224
423
|
browser-use --cdp-url ws://localhost:9222/devtools/browser/... open <url>
|
|
225
424
|
\`\`\`
|
|
226
425
|
|