tinybeeai 0.0.0-stage → 0.16.1
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/.railway/railway.ts +83 -0
- package/.railway/tsconfig.json +13 -0
- package/AGENTS.md +102 -0
- package/Dockerfile +108 -0
- package/LICENSE +21 -0
- package/README.md +275 -2
- package/bin/localdost.js +29 -0
- package/bin/tinybeeai.js +28 -0
- package/compose.yml +63 -0
- package/demo/payloads/ci_failure.json +46 -0
- package/demo/payloads/outage.json +18 -0
- package/demo/payloads/pr_comment_edited.json +50 -0
- package/demo/payloads/pr_merged.json +80 -0
- package/demo/payloads/pr_opened.json +69 -0
- package/demo/payloads/pr_synchronize.json +69 -0
- package/demo/payloads/ticket_created.json +138 -0
- package/demo/sample-app/playwright.config.ts +20 -0
- package/demo/sample-app/server.ts +163 -0
- package/demo/sample-app/tests/checkout.spec.ts +13 -0
- package/demo/sample-app/tests/smoke.spec.ts +8 -0
- package/dist/agent/approval-retries.js +59 -0
- package/dist/agent/approval-retries.js.map +1 -0
- package/dist/agent/approvals.js +390 -0
- package/dist/agent/approvals.js.map +1 -0
- package/dist/agent/chat-bridge.js +154 -0
- package/dist/agent/chat-bridge.js.map +1 -0
- package/dist/agent/chat-lead.js +475 -0
- package/dist/agent/chat-lead.js.map +1 -0
- package/dist/agent/chat-loop.js +106 -0
- package/dist/agent/chat-loop.js.map +1 -0
- package/dist/agent/chat-mcp.js +49 -0
- package/dist/agent/chat-mcp.js.map +1 -0
- package/dist/agent/chat-tool-blocks.js +453 -0
- package/dist/agent/chat-tool-blocks.js.map +1 -0
- package/dist/agent/chat-view.js +94 -0
- package/dist/agent/chat-view.js.map +1 -0
- package/dist/agent/chat-views.js +781 -0
- package/dist/agent/chat-views.js.map +1 -0
- package/dist/agent/chat.js +1703 -0
- package/dist/agent/chat.js.map +1 -0
- package/dist/agent/destinations.js +150 -0
- package/dist/agent/destinations.js.map +1 -0
- package/dist/agent/llm-cli.js +451 -0
- package/dist/agent/llm-cli.js.map +1 -0
- package/dist/agent/llm-codex.js +493 -0
- package/dist/agent/llm-codex.js.map +1 -0
- package/dist/agent/llm-openai.js +211 -0
- package/dist/agent/llm-openai.js.map +1 -0
- package/dist/agent/llm.js +1464 -0
- package/dist/agent/llm.js.map +1 -0
- package/dist/agent/memory.js +33 -0
- package/dist/agent/memory.js.map +1 -0
- package/dist/agent/mock-views.js +93 -0
- package/dist/agent/mock-views.js.map +1 -0
- package/dist/agent/model-availability.js +207 -0
- package/dist/agent/model-availability.js.map +1 -0
- package/dist/agent/model-errors.js +188 -0
- package/dist/agent/model-errors.js.map +1 -0
- package/dist/agent/model-guard.js +311 -0
- package/dist/agent/model-guard.js.map +1 -0
- package/dist/agent/prompts.js +374 -0
- package/dist/agent/prompts.js.map +1 -0
- package/dist/agent/qa-lenses/qa-auth.md +32 -0
- package/dist/agent/qa-lenses/qa-check-then-act.md +33 -0
- package/dist/agent/qa-lenses/qa-control-has-no-effect.md +32 -0
- package/dist/agent/qa-lenses/qa-dates.md +31 -0
- package/dist/agent/qa-lenses/qa-double-submit.md +34 -0
- package/dist/agent/qa-lenses/qa-feature-flag.md +29 -0
- package/dist/agent/qa-lenses/qa-migration.md +35 -0
- package/dist/agent/qa-lenses/qa-money.md +38 -0
- package/dist/agent/qa-lenses/qa-response-shape-break.md +33 -0
- package/dist/agent/qa-lenses/qa-validation.md +29 -0
- package/dist/agent/qa-prompts.js +660 -0
- package/dist/agent/qa-prompts.js.map +1 -0
- package/dist/agent/reasoning.js +55 -0
- package/dist/agent/reasoning.js.map +1 -0
- package/dist/agent/redact.js +48 -0
- package/dist/agent/redact.js.map +1 -0
- package/dist/agent/rules.js +927 -0
- package/dist/agent/rules.js.map +1 -0
- package/dist/agent/runs.js +440 -0
- package/dist/agent/runs.js.map +1 -0
- package/dist/agent/send-retry.js +62 -0
- package/dist/agent/send-retry.js.map +1 -0
- package/dist/agent/team-notes.js +288 -0
- package/dist/agent/team-notes.js.map +1 -0
- package/dist/agent/token-meter.js +31 -0
- package/dist/agent/token-meter.js.map +1 -0
- package/dist/agent/triage.js +506 -0
- package/dist/agent/triage.js.map +1 -0
- package/dist/api.js +1047 -0
- package/dist/api.js.map +1 -0
- package/dist/approval-targets.js +107 -0
- package/dist/approval-targets.js.map +1 -0
- package/dist/bee/cloudflared.js +108 -0
- package/dist/bee/cloudflared.js.map +1 -0
- package/dist/bee/health.js +99 -0
- package/dist/bee/health.js.map +1 -0
- package/dist/bee/hive-client.js +75 -0
- package/dist/bee/hive-client.js.map +1 -0
- package/dist/bee/identity.js +39 -0
- package/dist/bee/identity.js.map +1 -0
- package/dist/bee/models.js +510 -0
- package/dist/bee/models.js.map +1 -0
- package/dist/bee/pairing.js +351 -0
- package/dist/bee/pairing.js.map +1 -0
- package/dist/bee/relay-client.js +50 -0
- package/dist/bee/relay-client.js.map +1 -0
- package/dist/bee/routes.js +214 -0
- package/dist/bee/routes.js.map +1 -0
- package/dist/bee/setup-page.js +223 -0
- package/dist/bee/setup-page.js.map +1 -0
- package/dist/bee/state.js +41 -0
- package/dist/bee/state.js.map +1 -0
- package/dist/bee/status.js +117 -0
- package/dist/bee/status.js.map +1 -0
- package/dist/bee/tunnel-manager.js +245 -0
- package/dist/bee/tunnel-manager.js.map +1 -0
- package/dist/bee/updater.js +268 -0
- package/dist/bee/updater.js.map +1 -0
- package/dist/boot.js +41 -0
- package/dist/boot.js.map +1 -0
- package/dist/call/index.js +145 -0
- package/dist/call/index.js.map +1 -0
- package/dist/case-folders.js +294 -0
- package/dist/case-folders.js.map +1 -0
- package/dist/cases.js +554 -0
- package/dist/cases.js.map +1 -0
- package/dist/chat-blocks.js +709 -0
- package/dist/chat-blocks.js.map +1 -0
- package/dist/chat-parse-util.js +38 -0
- package/dist/chat-parse-util.js.map +1 -0
- package/dist/chat-results.js +96 -0
- package/dist/chat-results.js.map +1 -0
- package/dist/chat-stats.js +193 -0
- package/dist/chat-stats.js.map +1 -0
- package/dist/chat-view-specs.js +186 -0
- package/dist/chat-view-specs.js.map +1 -0
- package/dist/cli/doctor-ops.js +361 -0
- package/dist/cli/doctor-ops.js.map +1 -0
- package/dist/cli/doctor.js +289 -0
- package/dist/cli/doctor.js.map +1 -0
- package/dist/cli/dogfood.js +70 -0
- package/dist/cli/dogfood.js.map +1 -0
- package/dist/cli/env-file.js +34 -0
- package/dist/cli/env-file.js.map +1 -0
- package/dist/cli/eval-chat-cases.js +359 -0
- package/dist/cli/eval-chat-cases.js.map +1 -0
- package/dist/cli/eval-chat-results.js +85 -0
- package/dist/cli/eval-chat-results.js.map +1 -0
- package/dist/cli/eval-chat.js +508 -0
- package/dist/cli/eval-chat.js.map +1 -0
- package/dist/cli/eval-designer.js +67 -0
- package/dist/cli/eval-designer.js.map +1 -0
- package/dist/cli/eval-qa-review.js +284 -0
- package/dist/cli/eval-qa-review.js.map +1 -0
- package/dist/cli/golden-export.js +35 -0
- package/dist/cli/golden-export.js.map +1 -0
- package/dist/cli/index.js +90 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init.js +746 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/scan-repo.js +199 -0
- package/dist/cli/scan-repo.js.map +1 -0
- package/dist/cli/seed.js +108 -0
- package/dist/cli/seed.js.map +1 -0
- package/dist/cli/tinybee.js +247 -0
- package/dist/cli/tinybee.js.map +1 -0
- package/dist/config.js +138 -0
- package/dist/config.js.map +1 -0
- package/dist/connect/aivision-local.js +833 -0
- package/dist/connect/aivision-local.js.map +1 -0
- package/dist/connect/aivision-token.js +84 -0
- package/dist/connect/aivision-token.js.map +1 -0
- package/dist/connect/crypto.js +65 -0
- package/dist/connect/crypto.js.map +1 -0
- package/dist/connect/deps.js +110 -0
- package/dist/connect/deps.js.map +1 -0
- package/dist/connect/engines.js +144 -0
- package/dist/connect/engines.js.map +1 -0
- package/dist/connect/github-access.js +74 -0
- package/dist/connect/github-access.js.map +1 -0
- package/dist/connect/github-app.js +129 -0
- package/dist/connect/github-app.js.map +1 -0
- package/dist/connect/index.js +9 -0
- package/dist/connect/index.js.map +1 -0
- package/dist/connect/model-choices.js +201 -0
- package/dist/connect/model-choices.js.map +1 -0
- package/dist/connect/providers.js +900 -0
- package/dist/connect/providers.js.map +1 -0
- package/dist/connect/readiness.js +232 -0
- package/dist/connect/readiness.js.map +1 -0
- package/dist/connect/redact.js +16 -0
- package/dist/connect/redact.js.map +1 -0
- package/dist/connect/registry.js +406 -0
- package/dist/connect/registry.js.map +1 -0
- package/dist/connect/store.js +283 -0
- package/dist/connect/store.js.map +1 -0
- package/dist/connect/tunnel.js +134 -0
- package/dist/connect/tunnel.js.map +1 -0
- package/dist/connect/types.js +8 -0
- package/dist/connect/types.js.map +1 -0
- package/dist/connections/index.js +5 -0
- package/dist/connections/index.js.map +1 -0
- package/dist/connections/manager.js +223 -0
- package/dist/connections/manager.js.map +1 -0
- package/dist/connections/presets.js +264 -0
- package/dist/connections/presets.js.map +1 -0
- package/dist/connections/store.js +132 -0
- package/dist/connections/store.js.map +1 -0
- package/dist/connections/tools.js +206 -0
- package/dist/connections/tools.js.map +1 -0
- package/dist/db-schema.js +355 -0
- package/dist/db-schema.js.map +1 -0
- package/dist/db.js +379 -0
- package/dist/db.js.map +1 -0
- package/dist/delivery.js +49 -0
- package/dist/delivery.js.map +1 -0
- package/dist/deploy-wait.js +701 -0
- package/dist/deploy-wait.js.map +1 -0
- package/dist/disk.js +243 -0
- package/dist/disk.js.map +1 -0
- package/dist/dot-health.js +966 -0
- package/dist/dot-health.js.map +1 -0
- package/dist/dot-remove.js +246 -0
- package/dist/dot-remove.js.map +1 -0
- package/dist/events.js +38 -0
- package/dist/events.js.map +1 -0
- package/dist/evidence-pack.js +423 -0
- package/dist/evidence-pack.js.map +1 -0
- package/dist/flows/answers.js +289 -0
- package/dist/flows/answers.js.map +1 -0
- package/dist/flows/change.js +811 -0
- package/dist/flows/change.js.map +1 -0
- package/dist/flows/checkStatus.js +524 -0
- package/dist/flows/checkStatus.js.map +1 -0
- package/dist/flows/ci.js +236 -0
- package/dist/flows/ci.js.map +1 -0
- package/dist/flows/ciFailure.js +76 -0
- package/dist/flows/ciFailure.js.map +1 -0
- package/dist/flows/common.js +522 -0
- package/dist/flows/common.js.map +1 -0
- package/dist/flows/default-branch.js +29 -0
- package/dist/flows/default-branch.js.map +1 -0
- package/dist/flows/defectDraft.js +447 -0
- package/dist/flows/defectDraft.js.map +1 -0
- package/dist/flows/defects.js +623 -0
- package/dist/flows/defects.js.map +1 -0
- package/dist/flows/digest.js +295 -0
- package/dist/flows/digest.js.map +1 -0
- package/dist/flows/impact.js +82 -0
- package/dist/flows/impact.js.map +1 -0
- package/dist/flows/index.js +23 -0
- package/dist/flows/index.js.map +1 -0
- package/dist/flows/intent-sources.js +72 -0
- package/dist/flows/intent-sources.js.map +1 -0
- package/dist/flows/mergeCases.js +169 -0
- package/dist/flows/mergeCases.js.map +1 -0
- package/dist/flows/nightlyRun.js +82 -0
- package/dist/flows/nightlyRun.js.map +1 -0
- package/dist/flows/outage.js +64 -0
- package/dist/flows/outage.js.map +1 -0
- package/dist/flows/postMerge.js +5 -0
- package/dist/flows/postMerge.js.map +1 -0
- package/dist/flows/prCheck.js +5 -0
- package/dist/flows/prCheck.js.map +1 -0
- package/dist/flows/prTarget.js +66 -0
- package/dist/flows/prTarget.js.map +1 -0
- package/dist/flows/qa.js +363 -0
- package/dist/flows/qa.js.map +1 -0
- package/dist/flows/questions.js +160 -0
- package/dist/flows/questions.js.map +1 -0
- package/dist/flows/recovery.js +64 -0
- package/dist/flows/recovery.js.map +1 -0
- package/dist/flows/rerun.js +50 -0
- package/dist/flows/rerun.js.map +1 -0
- package/dist/flows/testDesign.js +294 -0
- package/dist/flows/testDesign.js.map +1 -0
- package/dist/flows/testDesignJob.js +46 -0
- package/dist/flows/testDesignJob.js.map +1 -0
- package/dist/flows/testRepo.js +228 -0
- package/dist/flows/testRepo.js.map +1 -0
- package/dist/flows/testSavings.js +381 -0
- package/dist/flows/testSavings.js.map +1 -0
- package/dist/flows/testStatus.js +343 -0
- package/dist/flows/testStatus.js.map +1 -0
- package/dist/flows/ticketContext.js +425 -0
- package/dist/flows/ticketContext.js.map +1 -0
- package/dist/flows/ticketReview.js +249 -0
- package/dist/flows/ticketReview.js.map +1 -0
- package/dist/flows/ticks.js +73 -0
- package/dist/flows/ticks.js.map +1 -0
- package/dist/hive/admin.js +122 -0
- package/dist/hive/admin.js.map +1 -0
- package/dist/hive/auth.js +130 -0
- package/dist/hive/auth.js.map +1 -0
- package/dist/hive/billing.js +278 -0
- package/dist/hive/billing.js.map +1 -0
- package/dist/hive/config.js +63 -0
- package/dist/hive/config.js.map +1 -0
- package/dist/hive/db.js +186 -0
- package/dist/hive/db.js.map +1 -0
- package/dist/hive/embed.js +76 -0
- package/dist/hive/embed.js.map +1 -0
- package/dist/hive/errors.js +17 -0
- package/dist/hive/errors.js.map +1 -0
- package/dist/hive/google.js +75 -0
- package/dist/hive/google.js.map +1 -0
- package/dist/hive/index.js +25 -0
- package/dist/hive/index.js.map +1 -0
- package/dist/hive/jwt.js +57 -0
- package/dist/hive/jwt.js.map +1 -0
- package/dist/hive/keys.js +61 -0
- package/dist/hive/keys.js.map +1 -0
- package/dist/hive/mail.js +27 -0
- package/dist/hive/mail.js.map +1 -0
- package/dist/hive/native-push.js +255 -0
- package/dist/hive/native-push.js.map +1 -0
- package/dist/hive/pairing.js +342 -0
- package/dist/hive/pairing.js.map +1 -0
- package/dist/hive/presence.js +121 -0
- package/dist/hive/presence.js.map +1 -0
- package/dist/hive/push.js +185 -0
- package/dist/hive/push.js.map +1 -0
- package/dist/hive/relay.js +205 -0
- package/dist/hive/relay.js.map +1 -0
- package/dist/hive/routes.js +228 -0
- package/dist/hive/routes.js.map +1 -0
- package/dist/hive/server.js +12 -0
- package/dist/hive/server.js.map +1 -0
- package/dist/hive/session.js +28 -0
- package/dist/hive/session.js.map +1 -0
- package/dist/hive/tenants.js +287 -0
- package/dist/hive/tenants.js.map +1 -0
- package/dist/hive/tunnel/cloudflare.js +160 -0
- package/dist/hive/tunnel/cloudflare.js.map +1 -0
- package/dist/hive/tunnel/mock.js +52 -0
- package/dist/hive/tunnel/mock.js.map +1 -0
- package/dist/hive/tunnel/provider.js +19 -0
- package/dist/hive/tunnel/provider.js.map +1 -0
- package/dist/hive/updates.js +61 -0
- package/dist/hive/updates.js.map +1 -0
- package/dist/http-error.js +11 -0
- package/dist/http-error.js.map +1 -0
- package/dist/impact/classify.js +226 -0
- package/dist/impact/classify.js.map +1 -0
- package/dist/impact/find.js +259 -0
- package/dist/impact/find.js.map +1 -0
- package/dist/impact/pr.js +54 -0
- package/dist/impact/pr.js.map +1 -0
- package/dist/impact/store.js +365 -0
- package/dist/impact/store.js.map +1 -0
- package/dist/impact/text.js +158 -0
- package/dist/impact/text.js.map +1 -0
- package/dist/index.js +288 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/adf.js +397 -0
- package/dist/integrations/adf.js.map +1 -0
- package/dist/integrations/bot-marker.js +103 -0
- package/dist/integrations/bot-marker.js.map +1 -0
- package/dist/integrations/github-issues.js +705 -0
- package/dist/integrations/github-issues.js.map +1 -0
- package/dist/integrations/github.js +1284 -0
- package/dist/integrations/github.js.map +1 -0
- package/dist/integrations/issue-create.js +60 -0
- package/dist/integrations/issue-create.js.map +1 -0
- package/dist/integrations/jira.js +279 -0
- package/dist/integrations/jira.js.map +1 -0
- package/dist/integrations/linear.js +273 -0
- package/dist/integrations/linear.js.map +1 -0
- package/dist/integrations/own-identity-warm.js +47 -0
- package/dist/integrations/own-identity-warm.js.map +1 -0
- package/dist/integrations/own-identity.js +39 -0
- package/dist/integrations/own-identity.js.map +1 -0
- package/dist/integrations/status-change.js +42 -0
- package/dist/integrations/status-change.js.map +1 -0
- package/dist/lead-defects.js +202 -0
- package/dist/lead-defects.js.map +1 -0
- package/dist/lead-digest.js +333 -0
- package/dist/lead-digest.js.map +1 -0
- package/dist/lead-release.js +286 -0
- package/dist/lead-release.js.map +1 -0
- package/dist/lead.js +328 -0
- package/dist/lead.js.map +1 -0
- package/dist/legacy-names.js +51 -0
- package/dist/legacy-names.js.map +1 -0
- package/dist/limits.js +44 -0
- package/dist/limits.js.map +1 -0
- package/dist/link-trust.js +224 -0
- package/dist/link-trust.js.map +1 -0
- package/dist/links.js +219 -0
- package/dist/links.js.map +1 -0
- package/dist/loopback.js +35 -0
- package/dist/loopback.js.map +1 -0
- package/dist/model-cap.js +60 -0
- package/dist/model-cap.js.map +1 -0
- package/dist/model-usage.js +173 -0
- package/dist/model-usage.js.map +1 -0
- package/dist/monitor/backfill.js +39 -0
- package/dist/monitor/backfill.js.map +1 -0
- package/dist/monitor/browser-probe.js +198 -0
- package/dist/monitor/browser-probe.js.map +1 -0
- package/dist/monitor/catch-up.js +31 -0
- package/dist/monitor/catch-up.js.map +1 -0
- package/dist/monitor/pollers.js +1606 -0
- package/dist/monitor/pollers.js.map +1 -0
- package/dist/monitor/probes.js +178 -0
- package/dist/monitor/probes.js.map +1 -0
- package/dist/monitor/self-health.js +228 -0
- package/dist/monitor/self-health.js.map +1 -0
- package/dist/monitor/statuspage.js +105 -0
- package/dist/monitor/statuspage.js.map +1 -0
- package/dist/nightly-scheduler.js +127 -0
- package/dist/nightly-scheduler.js.map +1 -0
- package/dist/nightly.js +141 -0
- package/dist/nightly.js.map +1 -0
- package/dist/notify/headline.js +114 -0
- package/dist/notify/headline.js.map +1 -0
- package/dist/notify/push.js +174 -0
- package/dist/notify/push.js.map +1 -0
- package/dist/object-cards.js +585 -0
- package/dist/object-cards.js.map +1 -0
- package/dist/object-links.js +47 -0
- package/dist/object-links.js.map +1 -0
- package/dist/onboarding-checks.js +141 -0
- package/dist/onboarding-checks.js.map +1 -0
- package/dist/onboarding.js +401 -0
- package/dist/onboarding.js.map +1 -0
- package/dist/path-filters.js +62 -0
- package/dist/path-filters.js.map +1 -0
- package/dist/phone/alerts.js +67 -0
- package/dist/phone/alerts.js.map +1 -0
- package/dist/phone/auth.js +240 -0
- package/dist/phone/auth.js.map +1 -0
- package/dist/phone/pairing.js +442 -0
- package/dist/phone/pairing.js.map +1 -0
- package/dist/phone/prefs.js +27 -0
- package/dist/phone/prefs.js.map +1 -0
- package/dist/phone/tailscale.js +161 -0
- package/dist/phone/tailscale.js.map +1 -0
- package/dist/pr-scope.js +441 -0
- package/dist/pr-scope.js.map +1 -0
- package/dist/proc.js +156 -0
- package/dist/proc.js.map +1 -0
- package/dist/profile/cache.js +108 -0
- package/dist/profile/cache.js.map +1 -0
- package/dist/profile/ci.js +216 -0
- package/dist/profile/ci.js.map +1 -0
- package/dist/profile/index.js +8 -0
- package/dist/profile/index.js.map +1 -0
- package/dist/profile/job.js +135 -0
- package/dist/profile/job.js.map +1 -0
- package/dist/profile/queries/go-tags.scm +47 -0
- package/dist/profile/queries/java-tags.scm +25 -0
- package/dist/profile/queries/javascript-tags.scm +104 -0
- package/dist/profile/queries/python-tags.scm +19 -0
- package/dist/profile/queries/typescript-tags.scm +28 -0
- package/dist/profile/scan-thread.js +42 -0
- package/dist/profile/scan-thread.js.map +1 -0
- package/dist/profile/scan-worker.js +16 -0
- package/dist/profile/scan-worker.js.map +1 -0
- package/dist/profile/scan.js +351 -0
- package/dist/profile/scan.js.map +1 -0
- package/dist/profile/stack.js +528 -0
- package/dist/profile/stack.js.map +1 -0
- package/dist/profile/store.js +35 -0
- package/dist/profile/store.js.map +1 -0
- package/dist/profile/tests.js +399 -0
- package/dist/profile/tests.js.map +1 -0
- package/dist/queue.js +350 -0
- package/dist/queue.js.map +1 -0
- package/dist/refs.js +756 -0
- package/dist/refs.js.map +1 -0
- package/dist/release-notes.js +272 -0
- package/dist/release-notes.js.map +1 -0
- package/dist/reports/build.js +243 -0
- package/dist/reports/build.js.map +1 -0
- package/dist/reports/index.js +211 -0
- package/dist/reports/index.js.map +1 -0
- package/dist/reports/store.js +150 -0
- package/dist/reports/store.js.map +1 -0
- package/dist/reports/ticket-titles.js +124 -0
- package/dist/reports/ticket-titles.js.map +1 -0
- package/dist/reports/trace-map.js +1278 -0
- package/dist/reports/trace-map.js.map +1 -0
- package/dist/reports/traceability.js +422 -0
- package/dist/reports/traceability.js.map +1 -0
- package/dist/repos/mirror.js +356 -0
- package/dist/repos/mirror.js.map +1 -0
- package/dist/repos-github.js +108 -0
- package/dist/repos-github.js.map +1 -0
- package/dist/repos.js +891 -0
- package/dist/repos.js.map +1 -0
- package/dist/review/backend-anthropic.js +90 -0
- package/dist/review/backend-anthropic.js.map +1 -0
- package/dist/review/backend-cli.js +248 -0
- package/dist/review/backend-cli.js.map +1 -0
- package/dist/review/backend-codex.js +81 -0
- package/dist/review/backend-codex.js.map +1 -0
- package/dist/review/backend-mock.js +686 -0
- package/dist/review/backend-mock.js.map +1 -0
- package/dist/review/backend-only.js +168 -0
- package/dist/review/backend-only.js.map +1 -0
- package/dist/review/backend.js +105 -0
- package/dist/review/backend.js.map +1 -0
- package/dist/review/baseline/render-v1.js +483 -0
- package/dist/review/baseline/render-v1.js.map +1 -0
- package/dist/review/change-summary.js +197 -0
- package/dist/review/change-summary.js.map +1 -0
- package/dist/review/changelog.js +40 -0
- package/dist/review/changelog.js.map +1 -0
- package/dist/review/check.js +494 -0
- package/dist/review/check.js.map +1 -0
- package/dist/review/checkout.js +185 -0
- package/dist/review/checkout.js.map +1 -0
- package/dist/review/classify.js +178 -0
- package/dist/review/classify.js.map +1 -0
- package/dist/review/coverage.js +347 -0
- package/dist/review/coverage.js.map +1 -0
- package/dist/review/decision-eval.js +121 -0
- package/dist/review/decision-eval.js.map +1 -0
- package/dist/review/deliver.js +104 -0
- package/dist/review/deliver.js.map +1 -0
- package/dist/review/designer-eval.js +280 -0
- package/dist/review/designer-eval.js.map +1 -0
- package/dist/review/dogfood-digest.js +136 -0
- package/dist/review/dogfood-digest.js.map +1 -0
- package/dist/review/dogfood-eval.js +486 -0
- package/dist/review/dogfood-eval.js.map +1 -0
- package/dist/review/environment.js +109 -0
- package/dist/review/environment.js.map +1 -0
- package/dist/review/eval.js +405 -0
- package/dist/review/eval.js.map +1 -0
- package/dist/review/glob.js +110 -0
- package/dist/review/glob.js.map +1 -0
- package/dist/review/golden-export.js +219 -0
- package/dist/review/golden-export.js.map +1 -0
- package/dist/review/impact.js +406 -0
- package/dist/review/impact.js.map +1 -0
- package/dist/review/imports.js +542 -0
- package/dist/review/imports.js.map +1 -0
- package/dist/review/index.js +512 -0
- package/dist/review/index.js.map +1 -0
- package/dist/review/intent.js +128 -0
- package/dist/review/intent.js.map +1 -0
- package/dist/review/lenses.js +167 -0
- package/dist/review/lenses.js.map +1 -0
- package/dist/review/linked-tickets.js +293 -0
- package/dist/review/linked-tickets.js.map +1 -0
- package/dist/review/merge.js +370 -0
- package/dist/review/merge.js.map +1 -0
- package/dist/review/on-demand.js +218 -0
- package/dist/review/on-demand.js.map +1 -0
- package/dist/review/prompt-eval.js +299 -0
- package/dist/review/prompt-eval.js.map +1 -0
- package/dist/review/prompt-variants.js +37 -0
- package/dist/review/prompt-variants.js.map +1 -0
- package/dist/review/readability-eval.js +217 -0
- package/dist/review/readability-eval.js.map +1 -0
- package/dist/review/readability.js +295 -0
- package/dist/review/readability.js.map +1 -0
- package/dist/review/render.js +2409 -0
- package/dist/review/render.js.map +1 -0
- package/dist/review/repo.js +194 -0
- package/dist/review/repo.js.map +1 -0
- package/dist/review/report-plan.js +90 -0
- package/dist/review/report-plan.js.map +1 -0
- package/dist/review/routes.js +195 -0
- package/dist/review/routes.js.map +1 -0
- package/dist/review/run-summary.js +34 -0
- package/dist/review/run-summary.js.map +1 -0
- package/dist/review/run.js +245 -0
- package/dist/review/run.js.map +1 -0
- package/dist/review/scope.js +454 -0
- package/dist/review/scope.js.map +1 -0
- package/dist/review/security.js +432 -0
- package/dist/review/security.js.map +1 -0
- package/dist/review/signals.js +550 -0
- package/dist/review/signals.js.map +1 -0
- package/dist/review/specs.js +150 -0
- package/dist/review/specs.js.map +1 -0
- package/dist/review/ste.js +133 -0
- package/dist/review/ste.js.map +1 -0
- package/dist/review/test-repo-file.js +18 -0
- package/dist/review/test-repo-file.js.map +1 -0
- package/dist/review/test-repo-lines.js +53 -0
- package/dist/review/test-repo-lines.js.map +1 -0
- package/dist/review/ticket-on-demand.js +232 -0
- package/dist/review/ticket-on-demand.js.map +1 -0
- package/dist/review/yaml.js +298 -0
- package/dist/review/yaml.js.map +1 -0
- package/dist/room.js +361 -0
- package/dist/room.js.map +1 -0
- package/dist/routes/activity.js +219 -0
- package/dist/routes/activity.js.map +1 -0
- package/dist/routes/call.js +29 -0
- package/dist/routes/call.js.map +1 -0
- package/dist/routes/cards.js +40 -0
- package/dist/routes/cards.js.map +1 -0
- package/dist/routes/cases.js +133 -0
- package/dist/routes/cases.js.map +1 -0
- package/dist/routes/connect.js +268 -0
- package/dist/routes/connect.js.map +1 -0
- package/dist/routes/connection-presets.js +32 -0
- package/dist/routes/connection-presets.js.map +1 -0
- package/dist/routes/connections.js +177 -0
- package/dist/routes/connections.js.map +1 -0
- package/dist/routes/disk.js +19 -0
- package/dist/routes/disk.js.map +1 -0
- package/dist/routes/docs.js +71 -0
- package/dist/routes/docs.js.map +1 -0
- package/dist/routes/dot-suggest.js +1002 -0
- package/dist/routes/dot-suggest.js.map +1 -0
- package/dist/routes/evidence-pack.js +16 -0
- package/dist/routes/evidence-pack.js.map +1 -0
- package/dist/routes/health.js +121 -0
- package/dist/routes/health.js.map +1 -0
- package/dist/routes/impact.js +48 -0
- package/dist/routes/impact.js.map +1 -0
- package/dist/routes/lead.js +50 -0
- package/dist/routes/lead.js.map +1 -0
- package/dist/routes/links.js +13 -0
- package/dist/routes/links.js.map +1 -0
- package/dist/routes/markdown.js +62 -0
- package/dist/routes/markdown.js.map +1 -0
- package/dist/routes/onboarding.js +47 -0
- package/dist/routes/onboarding.js.map +1 -0
- package/dist/routes/phone.js +231 -0
- package/dist/routes/phone.js.map +1 -0
- package/dist/routes/release-notes.js +30 -0
- package/dist/routes/release-notes.js.map +1 -0
- package/dist/routes/reports.js +102 -0
- package/dist/routes/reports.js.map +1 -0
- package/dist/routes/repos.js +91 -0
- package/dist/routes/repos.js.map +1 -0
- package/dist/routes/review.js +283 -0
- package/dist/routes/review.js.map +1 -0
- package/dist/routes/roles.js +114 -0
- package/dist/routes/roles.js.map +1 -0
- package/dist/routes/room.js +21 -0
- package/dist/routes/room.js.map +1 -0
- package/dist/routes/runner.js +156 -0
- package/dist/routes/runner.js.map +1 -0
- package/dist/routes/runs.js +84 -0
- package/dist/routes/runs.js.map +1 -0
- package/dist/routes/setup.js +18 -0
- package/dist/routes/setup.js.map +1 -0
- package/dist/routes/test-runs.js +220 -0
- package/dist/routes/test-runs.js.map +1 -0
- package/dist/routes/ticket-status.js +17 -0
- package/dist/routes/ticket-status.js.map +1 -0
- package/dist/routes/traceability.js +143 -0
- package/dist/routes/traceability.js.map +1 -0
- package/dist/routes/true.js +142 -0
- package/dist/routes/true.js.map +1 -0
- package/dist/routes/updates.js +70 -0
- package/dist/routes/updates.js.map +1 -0
- package/dist/runner/adapters/index.js +12 -0
- package/dist/runner/adapters/index.js.map +1 -0
- package/dist/runner/adapters/playwright.js +68 -0
- package/dist/runner/adapters/playwright.js.map +1 -0
- package/dist/runner/aivision/cases.js +172 -0
- package/dist/runner/aivision/cases.js.map +1 -0
- package/dist/runner/aivision/cli.js +201 -0
- package/dist/runner/aivision/cli.js.map +1 -0
- package/dist/runner/aivision/index.js +281 -0
- package/dist/runner/aivision/index.js.map +1 -0
- package/dist/runner/aivision/server.js +394 -0
- package/dist/runner/aivision/server.js.map +1 -0
- package/dist/runner/aivision/shared.js +140 -0
- package/dist/runner/aivision/shared.js.map +1 -0
- package/dist/runner/artifact-cap.js +189 -0
- package/dist/runner/artifact-cap.js.map +1 -0
- package/dist/runner/artifacts.js +433 -0
- package/dist/runner/artifacts.js.map +1 -0
- package/dist/runner/command.js +564 -0
- package/dist/runner/command.js.map +1 -0
- package/dist/runner/copyfiles.js +221 -0
- package/dist/runner/copyfiles.js.map +1 -0
- package/dist/runner/engines.js +32 -0
- package/dist/runner/engines.js.map +1 -0
- package/dist/runner/evidence.js +114 -0
- package/dist/runner/evidence.js.map +1 -0
- package/dist/runner/host-env.js +160 -0
- package/dist/runner/host-env.js.map +1 -0
- package/dist/runner/index.js +1221 -0
- package/dist/runner/index.js.map +1 -0
- package/dist/runner/observe.js +603 -0
- package/dist/runner/observe.js.map +1 -0
- package/dist/runner/playwright-json.js +108 -0
- package/dist/runner/playwright-json.js.map +1 -0
- package/dist/runner/pwgen/exec.js +192 -0
- package/dist/runner/pwgen/exec.js.map +1 -0
- package/dist/runner/pwgen/explore.js +111 -0
- package/dist/runner/pwgen/explore.js.map +1 -0
- package/dist/runner/pwgen/index.js +423 -0
- package/dist/runner/pwgen/index.js.map +1 -0
- package/dist/runner/pwgen/propose.js +69 -0
- package/dist/runner/pwgen/propose.js.map +1 -0
- package/dist/runner/pwgen/source.js +632 -0
- package/dist/runner/pwgen/source.js.map +1 -0
- package/dist/runner/setup.js +222 -0
- package/dist/runner/setup.js.map +1 -0
- package/dist/runner/step-reporter.js +107 -0
- package/dist/runner/step-reporter.js.map +1 -0
- package/dist/runner/test-repo.js +326 -0
- package/dist/runner/test-repo.js.map +1 -0
- package/dist/runner/typed-value.js +46 -0
- package/dist/runner/typed-value.js.map +1 -0
- package/dist/runner/verify.js +133 -0
- package/dist/runner/verify.js.map +1 -0
- package/dist/runner/worktree.js +349 -0
- package/dist/runner/worktree.js.map +1 -0
- package/dist/sandbox.js +61 -0
- package/dist/sandbox.js.map +1 -0
- package/dist/server.js +262 -0
- package/dist/server.js.map +1 -0
- package/dist/shadow-week.js +126 -0
- package/dist/shadow-week.js.map +1 -0
- package/dist/shutdown.js +92 -0
- package/dist/shutdown.js.map +1 -0
- package/dist/slack/index.js +645 -0
- package/dist/slack/index.js.map +1 -0
- package/dist/stages/config.js +147 -0
- package/dist/stages/config.js.map +1 -0
- package/dist/stages/index.js +41 -0
- package/dist/stages/index.js.map +1 -0
- package/dist/suites.js +293 -0
- package/dist/suites.js.map +1 -0
- package/dist/target-url.js +116 -0
- package/dist/target-url.js.map +1 -0
- package/dist/test-runs.js +662 -0
- package/dist/test-runs.js.map +1 -0
- package/dist/ticket-keys.js +97 -0
- package/dist/ticket-keys.js.map +1 -0
- package/dist/ticket-supersede.js +105 -0
- package/dist/ticket-supersede.js.map +1 -0
- package/dist/tinybee/ed25519.js +99 -0
- package/dist/tinybee/ed25519.js.map +1 -0
- package/dist/tinybee/models-routes.js +19 -0
- package/dist/tinybee/models-routes.js.map +1 -0
- package/dist/tinybee/pair-payload.js +41 -0
- package/dist/tinybee/pair-payload.js.map +1 -0
- package/dist/tinybee/update-manifest.js +77 -0
- package/dist/tinybee/update-manifest.js.map +1 -0
- package/dist/tinybee/well-known.js +64 -0
- package/dist/tinybee/well-known.js.map +1 -0
- package/dist/tinybee/workflows/activity.js +23 -0
- package/dist/tinybee/workflows/activity.js.map +1 -0
- package/dist/tinybee/workflows/cron.js +210 -0
- package/dist/tinybee/workflows/cron.js.map +1 -0
- package/dist/tinybee/workflows/engine.js +371 -0
- package/dist/tinybee/workflows/engine.js.map +1 -0
- package/dist/tinybee/workflows/from-text.js +203 -0
- package/dist/tinybee/workflows/from-text.js.map +1 -0
- package/dist/tinybee/workflows/routes.js +189 -0
- package/dist/tinybee/workflows/routes.js.map +1 -0
- package/dist/tinybee/workflows/scheduler.js +100 -0
- package/dist/tinybee/workflows/scheduler.js.map +1 -0
- package/dist/tinybee/workflows/skills.js +227 -0
- package/dist/tinybee/workflows/skills.js.map +1 -0
- package/dist/tinybee/workflows/store.js +205 -0
- package/dist/tinybee/workflows/store.js.map +1 -0
- package/dist/tinybee/workflows/types.js +180 -0
- package/dist/tinybee/workflows/types.js.map +1 -0
- package/dist/tinybee/workflows/yaml.js +323 -0
- package/dist/tinybee/workflows/yaml.js.map +1 -0
- package/dist/true/api.js +495 -0
- package/dist/true/api.js.map +1 -0
- package/dist/true/client.js +292 -0
- package/dist/true/client.js.map +1 -0
- package/dist/true/clock.js +36 -0
- package/dist/true/clock.js.map +1 -0
- package/dist/true/events.js +125 -0
- package/dist/true/events.js.map +1 -0
- package/dist/true/hosts.js +98 -0
- package/dist/true/hosts.js.map +1 -0
- package/dist/true/index.js +29 -0
- package/dist/true/index.js.map +1 -0
- package/dist/true/key.js +54 -0
- package/dist/true/key.js.map +1 -0
- package/dist/true/line.js +69 -0
- package/dist/true/line.js.map +1 -0
- package/dist/true/mask.js +31 -0
- package/dist/true/mask.js.map +1 -0
- package/dist/true/names.js +114 -0
- package/dist/true/names.js.map +1 -0
- package/dist/true/outbox.js +233 -0
- package/dist/true/outbox.js.map +1 -0
- package/dist/true/replay.js +164 -0
- package/dist/true/replay.js.map +1 -0
- package/dist/true/settings.js +123 -0
- package/dist/true/settings.js.map +1 -0
- package/dist/true/status.js +189 -0
- package/dist/true/status.js.map +1 -0
- package/dist/true/sync-cases.js +222 -0
- package/dist/true/sync-cases.js.map +1 -0
- package/dist/true/sync-manual.js +295 -0
- package/dist/true/sync-manual.js.map +1 -0
- package/dist/true/sync-runs.js +109 -0
- package/dist/true/sync-runs.js.map +1 -0
- package/dist/true/worker.js +414 -0
- package/dist/true/worker.js.map +1 -0
- package/dist/types.js +32 -0
- package/dist/types.js.map +1 -0
- package/dist/updates/asks.js +38 -0
- package/dist/updates/asks.js.map +1 -0
- package/dist/updates/index.js +835 -0
- package/dist/updates/index.js.map +1 -0
- package/dist/updates/owner.js +24 -0
- package/dist/updates/owner.js.map +1 -0
- package/dist/updates/prefs.js +118 -0
- package/dist/updates/prefs.js.map +1 -0
- package/dist/updates/route.js +78 -0
- package/dist/updates/route.js.map +1 -0
- package/dist/updates/sources.js +345 -0
- package/dist/updates/sources.js.map +1 -0
- package/dist/updates/words.js +452 -0
- package/dist/updates/words.js.map +1 -0
- package/dist/version.js +53 -0
- package/dist/version.js.map +1 -0
- package/dist/view-compute.js +382 -0
- package/dist/view-compute.js.map +1 -0
- package/dist/view-spec.js +894 -0
- package/dist/view-spec.js.map +1 -0
- package/dist/web/apple-touch-icon.png +0 -0
- package/dist/web/assets/ApprovalCard-Br_z5z7G.css +1 -0
- package/dist/web/assets/ApprovalCard-CfGhGFo_.js +3 -0
- package/dist/web/assets/CardFromRef-BaTGmZ9c.js +2 -0
- package/dist/web/assets/CardFromRef-DO7i2uDd.css +1 -0
- package/dist/web/assets/Cases-8l_6UcLh.js +2 -0
- package/dist/web/assets/Cases-CpfED0uB.css +1 -0
- package/dist/web/assets/Chat-BKDiR0qt.js +3 -0
- package/dist/web/assets/Chat-DxjdyYUu.css +1 -0
- package/dist/web/assets/ConfirmDialog-CIMveD-b.js +2 -0
- package/dist/web/assets/ConnectSheet-Cm5vbZdR.js +4 -0
- package/dist/web/assets/Docs-HKGuY0WE.js +2 -0
- package/dist/web/assets/Docs-fodKx8S7.css +1 -0
- package/dist/web/assets/DotDetail-DskS3NWe.js +2 -0
- package/dist/web/assets/DotDetail-OWRSD_1x.css +1 -0
- package/dist/web/assets/DotStage-BZDclfzV.css +1 -0
- package/dist/web/assets/DotStage-CtMNzCN3.js +2 -0
- package/dist/web/assets/Dots-BqCsS34m.js +2 -0
- package/dist/web/assets/EvidencePack-DQ3kCJX4.js +2 -0
- package/dist/web/assets/EvidencePack-DV_9ETsA.css +1 -0
- package/dist/web/assets/FailedDeliveries-1F2kFcs9.js +2 -0
- package/dist/web/assets/FailedDeliveries-DXa2_VvI.css +1 -0
- package/dist/web/assets/Feed-5wiHRTFK.js +2 -0
- package/dist/web/assets/GfmView-C-NYaduC.js +4 -0
- package/dist/web/assets/ImpactList-C-RNuDB0.js +2 -0
- package/dist/web/assets/ImpactList-C612dFdw.css +1 -0
- package/dist/web/assets/Inbox-kc1bKVL_.js +2 -0
- package/dist/web/assets/JoinScreen-C3L4wmP3.js +2 -0
- package/dist/web/assets/JoinScreen-COeAUv5v.css +1 -0
- package/dist/web/assets/LeadDialog-N3Zul9Rw.js +8 -0
- package/dist/web/assets/LeadDialog-xyWjAuAS.css +1 -0
- package/dist/web/assets/ListeningLine-BRFNaczY.js +2 -0
- package/dist/web/assets/ListeningLine-pN8CgyiK.css +1 -0
- package/dist/web/assets/Mascots-pIyGpxtD.js +2 -0
- package/dist/web/assets/ModelChoices-BxO1zyyr.js +2 -0
- package/dist/web/assets/ModelChoices-DQJnVxfs.css +1 -0
- package/dist/web/assets/NewDotDialog-CDPUWmgN.js +2 -0
- package/dist/web/assets/NewDotDialog-DrPPqkSZ.css +1 -0
- package/dist/web/assets/NewTestRunDialog-BQBthVHE.js +2 -0
- package/dist/web/assets/NoBreakNames-Csxdqdt6.js +2 -0
- package/dist/web/assets/Pair-omex_K7H.js +2 -0
- package/dist/web/assets/PushSection-CmqHlE_2.js +2 -0
- package/dist/web/assets/ReleaseNotes-B6VqFewP.js +2 -0
- package/dist/web/assets/ReleaseNotes-DBJUL7Vm.css +1 -0
- package/dist/web/assets/ReportPage-BHS1xWEt.js +162 -0
- package/dist/web/assets/Reports-BEHnDIb1.js +2 -0
- package/dist/web/assets/ReviewChangeDialog-BVSt-cw-.js +2 -0
- package/dist/web/assets/ReviewChangeDialog-BbIlHRx0.css +1 -0
- package/dist/web/assets/Room-BoG_uge4.js +2 -0
- package/dist/web/assets/Room-evAfiW_e.css +1 -0
- package/dist/web/assets/RunActions-ZY7yf1AF.js +2 -0
- package/dist/web/assets/RunDetail-C8St20GQ.css +1 -0
- package/dist/web/assets/RunDetail-qADXjBvd.js +9 -0
- package/dist/web/assets/RunRow-BKEJv8ib.js +2 -0
- package/dist/web/assets/RunnerTry-Dgpp67-s.js +6 -0
- package/dist/web/assets/RunnerTry-DsweWOfO.css +1 -0
- package/dist/web/assets/Settings-fs-QJwNM.js +2 -0
- package/dist/web/assets/Setup-DI6hBEP-.js +2 -0
- package/dist/web/assets/TestRows-wh03T5Li.js +4 -0
- package/dist/web/assets/TestRun-DTOyF-Pv.js +2 -0
- package/dist/web/assets/TestRuns-ggDjm1Q8.js +2 -0
- package/dist/web/assets/TinyBeeAddLaptop-bc3pmh3T.js +2 -0
- package/dist/web/assets/TinyBeeAi-CkyOzhm5.js +2 -0
- package/dist/web/assets/TinyBeeConnections-B2K_P38u.js +2 -0
- package/dist/web/assets/TinyBeeHome-DSpxX5KS.js +3 -0
- package/dist/web/assets/TinyBeePlan-BamiLziu.js +2 -0
- package/dist/web/assets/TinyBeeSignup-vHcz0Wen.js +2 -0
- package/dist/web/assets/TinyBeeSkills-By9RLUse.js +2 -0
- package/dist/web/assets/TinyBeeWorkflow-DeNO7Jsh.js +2 -0
- package/dist/web/assets/TinyBeeWorkflowEditor-B6OGC2OT.js +2 -0
- package/dist/web/assets/TinyBeeWorkflows-BN4-h6lt.js +2 -0
- package/dist/web/assets/Trace-BBCI1aIB.css +1 -0
- package/dist/web/assets/Trace-aF92UWaH.js +2 -0
- package/dist/web/assets/UpdatesSection-CCWEbkue.js +2 -0
- package/dist/web/assets/Welcome-CCcy558Q.js +2 -0
- package/dist/web/assets/activity-C3qilrDm.css +1 -0
- package/dist/web/assets/activity-CBfTSxqw.js +2 -0
- package/dist/web/assets/authedMedia-BTYt_tyu.js +2 -0
- package/dist/web/assets/beeApi-BHW8Tx1s.js +2 -0
- package/dist/web/assets/data-CmXvx3Mj.js +2 -0
- package/dist/web/assets/engines-CfdJODFj.css +1 -0
- package/dist/web/assets/format-BBZ8vFyT.js +2 -0
- package/dist/web/assets/forms-Coc7p2UF.css +1 -0
- package/dist/web/assets/hivePush-DZJDokj7.js +2 -0
- package/dist/web/assets/impactModel-MY1OFuiP.js +2 -0
- package/dist/web/assets/index-B6qKm1NW.js +13 -0
- package/dist/web/assets/index-BvKyT1X7.css +1 -0
- package/dist/web/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- package/dist/web/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- package/dist/web/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- package/dist/web/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- package/dist/web/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
- package/dist/web/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- package/dist/web/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- package/dist/web/assets/lead-BL_P_kri.css +1 -0
- package/dist/web/assets/model-BIQy5IVG.js +2 -0
- package/dist/web/assets/modelsApi-PUSySRQw.js +2 -0
- package/dist/web/assets/newDotModel-BaLLyw57.js +2 -0
- package/dist/web/assets/onboarding-bfKqnM4Z.css +1 -0
- package/dist/web/assets/phone-Rs7FoyG0.css +1 -0
- package/dist/web/assets/phoneApi-BG_1-M-D.js +3 -0
- package/dist/web/assets/releaseModel-EynYMVOC.js +2 -0
- package/dist/web/assets/releaseNotesModel-A1Rtv3cV.js +2 -0
- package/dist/web/assets/reports-BWaA1HhM.js +37 -0
- package/dist/web/assets/reports-DXwdWQsB.css +1 -0
- package/dist/web/assets/router-W6nZsQ33.js +2 -0
- package/dist/web/assets/runs-BY0Owv93.css +1 -0
- package/dist/web/assets/shadowWeekModel-BUUiww09.js +2 -0
- package/dist/web/assets/storage-yvL36AWt.js +2 -0
- package/dist/web/assets/store-IqrqHuFR.js +2 -0
- package/dist/web/assets/testruns-BzIZ0cR0.css +1 -0
- package/dist/web/assets/testruns-DyaqX4ji.js +2 -0
- package/dist/web/assets/true-9Q68cs5b.js +2 -0
- package/dist/web/assets/true-DPGBpoir.css +1 -0
- package/dist/web/assets/ui-DcmhYyYp.js +13 -0
- package/dist/web/assets/ui-DxEDgbIx.css +1 -0
- package/dist/web/assets/usePauseDot-BV60ZVy1.js +2 -0
- package/dist/web/assets/usePauseDot-NrSzMI1C.css +1 -0
- package/dist/web/assets/usePush-Dsm-TjlG.js +2 -0
- package/dist/web/assets/useRefChips-CbafNx59.js +68 -0
- package/dist/web/assets/useRestoreDot-D0B6W82H.js +2 -0
- package/dist/web/assets/view-worker-pyeVAhUT.js +2 -0
- package/dist/web/assets/workflowUi-QYsd3n9J.js +2 -0
- package/dist/web/favicon.png +0 -0
- package/dist/web/icon-192.png +0 -0
- package/dist/web/icon-512.png +0 -0
- package/dist/web/icon-maskable-512.png +0 -0
- package/dist/web/index.html +45 -0
- package/dist/web/manifest.webmanifest +23 -0
- package/dist/web/mascots/argus-attention.svg +7 -0
- package/dist/web/mascots/argus-ok.svg +7 -0
- package/dist/web/mascots/argus-outage.svg +7 -0
- package/dist/web/mascots/argus-running.svg +7 -0
- package/dist/web/mascots/bolt-attention.svg +7 -0
- package/dist/web/mascots/bolt-ok.svg +7 -0
- package/dist/web/mascots/bolt-outage.svg +7 -0
- package/dist/web/mascots/bolt-running.svg +7 -0
- package/dist/web/mascots/echo-attention.svg +7 -0
- package/dist/web/mascots/echo-ok.svg +7 -0
- package/dist/web/mascots/echo-outage.svg +7 -0
- package/dist/web/mascots/echo-running.svg +7 -0
- package/dist/web/mascots/lens-attention.svg +7 -0
- package/dist/web/mascots/lens-ok.svg +7 -0
- package/dist/web/mascots/lens-outage.svg +7 -0
- package/dist/web/mascots/lens-running.svg +7 -0
- package/dist/web/mascots/moss-attention.svg +7 -0
- package/dist/web/mascots/moss-ok.svg +7 -0
- package/dist/web/mascots/moss-outage.svg +7 -0
- package/dist/web/mascots/moss-running.svg +7 -0
- package/dist/web/mascots/nit-attention.svg +7 -0
- package/dist/web/mascots/nit-ok.svg +7 -0
- package/dist/web/mascots/nit-outage.svg +7 -0
- package/dist/web/mascots/nit-running.svg +7 -0
- package/dist/web/mascots/nova-attention.svg +7 -0
- package/dist/web/mascots/nova-ok.svg +7 -0
- package/dist/web/mascots/nova-outage.svg +7 -0
- package/dist/web/mascots/nova-running.svg +7 -0
- package/dist/web/mascots/penn-attention.svg +7 -0
- package/dist/web/mascots/penn-ok.svg +7 -0
- package/dist/web/mascots/penn-outage.svg +7 -0
- package/dist/web/mascots/penn-running.svg +7 -0
- package/dist/web/mascots/pip-attention.svg +7 -0
- package/dist/web/mascots/pip-ok.svg +7 -0
- package/dist/web/mascots/pip-outage.svg +7 -0
- package/dist/web/mascots/pip-running.svg +7 -0
- package/dist/web/mascots/ward-attention.svg +7 -0
- package/dist/web/mascots/ward-ok.svg +7 -0
- package/dist/web/mascots/ward-outage.svg +7 -0
- package/dist/web/mascots/ward-running.svg +7 -0
- package/dist/web/sw.js +98 -0
- package/dist/webhook-seen.js +53 -0
- package/dist/webhook-seen.js.map +1 -0
- package/dist/webhooks.js +625 -0
- package/dist/webhooks.js.map +1 -0
- package/dist/zip.js +63 -0
- package/dist/zip.js.map +1 -0
- package/docs/API-V2.md +532 -0
- package/docs/CHAT-EVAL.md +130 -0
- package/docs/CHAT-UI.md +416 -0
- package/docs/CONNECTIONS.md +89 -0
- package/docs/DATA-MODEL.md +518 -0
- package/docs/DEPLOY.md +577 -0
- package/docs/DOGFOOD-LEDGER.md +81 -0
- package/docs/GITHUB.md +148 -0
- package/docs/INTEGRATION-MODEL.md +200 -0
- package/docs/LEAD-DOT.md +553 -0
- package/docs/LIST-PATTERNS.md +52 -0
- package/docs/MULTI-REPO.md +766 -0
- package/docs/PARITY.md +276 -0
- package/docs/PR-REVIEW-QA.md +1266 -0
- package/docs/PR-REVIEW.md +357 -0
- package/docs/SANDBOX.md +320 -0
- package/docs/SETUP.md +776 -0
- package/docs/SLACK.md +80 -0
- package/docs/STAGES.md +619 -0
- package/docs/TRACE-MAP.md +89 -0
- package/docs/TRACKERS.md +225 -0
- package/docs/VOICE.md +36 -0
- package/docs/tinybee/00-README.md +45 -0
- package/docs/tinybee/01-PRD.md +216 -0
- package/docs/tinybee/02-architecture-pairing.md +199 -0
- package/docs/tinybee/03-local-agent.md +222 -0
- package/docs/tinybee/04-local-setup-ui.md +128 -0
- package/docs/tinybee/05-mobile-app-ux.md +199 -0
- package/docs/tinybee/06-environments-and-delivery.md +148 -0
- package/docs/tinybee/07-coding-agent-handoff.md +116 -0
- package/docs/tinybee/OPEN-QUESTIONS.md +26 -0
- package/docs/tinybee/PROGRESS.md +134 -0
- package/package.json +111 -4
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Bt as e,Cn as t,D as n,L as r,Lt as i,M as a,Mn as o,P as s,Vn as c,Wn as l,X as u,dt as d,mn as f,pn as p,rt as m}from"./ui-DcmhYyYp.js";import{i as h}from"./store-IqrqHuFR.js";var g=[{value:`auto`,label:`Playwright e2e, then AI-Vision`},{value:`playwright`,label:`Playwright e2e only`},{value:`aivision`,label:`AI-Vision only`},{value:`both`,label:`Both on every item`}],_=Object.fromEntries(g.map(e=>[e.value,e.label]));function v(e){return e?_[e.default]:void 0}function y(e){let t=v(e);return t?`Uses the workspace default (${t})`:`Uses the workspace default`}function b(e,t){return e&&e in _?{engine:e,inherited:!1}:t?{engine:t.default,inherited:!0}:void 0}function x(e){return`${_[e.engine]}${e.inherited?` (workspace default)`:``}`}function S(e,t,n){return{...Object.fromEntries(e.engines.map(e=>[e.key,e.defaultOn])),[t]:n}}function C(e,t){if(e.source===`env`)return`Set by the environment (${e.envName??`LOCALDOST_TEST_ENGINE`}).`;let n=e.engines.find(e=>e.key===t),r=e.engines.filter(e=>e.key!==t&&e.defaultOn);if(n?.defaultOn&&r.length===0)return`At least one engine stays on.`}function w(e){switch(e.source){case`env`:return`Set by the environment (${e.envName??`LOCALDOST_TEST_ENGINE`}). Remove it there to change the default here.`;case`auto`:return`Chosen for you: both engines when both are ready, otherwise the one that is ready.`;case`saved`:return`Chosen by you.`;default:return`Nothing chosen yet, so new tests run on AI-Vision only.`}}var T=l(c(),1);function E(e){return e.state===`error`?`error`:e.state===`demo`?`demo`:e.state===`missing`?`missing`:e.source===`env`?`env`:`connected`}var D={connected:`Connected`,env:`Set by environment`,demo:`Demo`,missing:`Not connected`,error:`Error`},O={model:`Writes verdicts, reviews, and chat replies.`,github:`Reads pull requests, posts reviews and check runs.`,linear:`Reads issues and posts ticket comments.`,jira:`Reads issues and posts ticket comments.`,slack:`Answers mentions and posts notices to a channel.`,push:`Sends alerts to phones and browsers.`,publicUrl:`Gives links in comments and pushes a run page.`,sandbox:`Runs tests in Docker containers.`,voice:`Realtime voice calls with a dot.`,aivision:`Runs vision tests that check what a user sees.`};function ee(e,t){switch(e){case`model`:return t===`codex-cli`?`openai`:t===`anthropic`?`anthropic`:t===`claude-cli`||t===`claude-token`?`claude`:void 0;case`publicUrl`:return t===`tunnel`?`cloudflare`:void 0;case`github`:case`linear`:case`jira`:case`slack`:return e;case`sandbox`:return`docker`;case`voice`:return`openai`;case`push`:return`bell`;case`aivision`:return`midscene`}}function te(e){return e===`aivision`||e===`midscene-web-bridge`?`midscene`:void 0}var ne=new Set([`sandbox`,`push`]);function k(e){let t=E(e);if(e.key===`sandbox`)return[`retry`];if(e.key===`push`)return t===`connected`||t===`env`?[`test`,`details`]:[`details`];switch(t){case`env`:return[`test`,`details`];case`connected`:return e.source===`detected`&&!e.hasSaved?[`test`,`edit`]:[`test`,`edit`,`disconnect`];case`error`:return e.source===`stored`?[`edit`,`test`,`disconnect`]:[`edit`,`test`];default:return[`connect`]}}function A(e){let t=E(e);if(t===`error`)return e.detail||`Failing. Open it to see why.`;if((t===`connected`||t===`env`)&&e.account){let t=j(e);return`${e.account}${t?` · ${t}`:``}`}return t===`missing`?O[e.key]:e.detail||O[e.key]}function j(e){let t=e.settings??{},n=t.repos;return Array.isArray(n)&&n.length?n.length===1?n[0]:`${n.length} repos`:typeof t.channel==`string`&&t.channel?`#${t.channel.replace(/^#/,``)}`:typeof t.projectKey==`string`&&t.projectKey?t.projectKey:typeof t.teamName==`string`&&t.teamName?t.teamName:``}function M(e){return e?`••••${e.slice(-4)}`:``}var N={error:0,missing:1,demo:2,connected:3,env:3};function re(e){let t=e.map((e,t)=>({s:e,i:t})).sort((e,t)=>N[E(e.s)]-N[E(t.s)]||e.i-t.i).map(e=>e.s);return[{id:`attention`,title:`Needs a fix`,items:t.filter(e=>E(e)===`error`)},{id:`available`,title:`Not connected`,items:t.filter(e=>[`missing`,`demo`].includes(E(e)))},{id:`connected`,title:`Connected`,items:t.filter(e=>[`connected`,`env`].includes(E(e)))}].filter(e=>e.items.length>0)}var P=e=>e.trim();function ie(e){return t=>P(t)?null:`Enter the ${e}.`}var F={anthropicKey:e=>P(e)?/^sk-ant-/.test(P(e))?null:`Anthropic API keys start with sk-ant-.`:`Enter the API key.`,claudeToken:e=>P(e)?/^sk-ant-oat/.test(P(e))?null:`Subscription tokens start with sk-ant-oat.`:`Paste the token that claude setup-token printed.`,githubPat:e=>P(e)?/^(ghp_|github_pat_)/.test(P(e))?null:`GitHub tokens start with ghp_ or github_pat_.`:`Enter the token.`,linearKey:e=>P(e)?/^lin_api_/.test(P(e))?null:`Linear API keys start with lin_api_.`:`Enter the API key.`,jiraSite:e=>{let t=P(e);if(!t)return`Enter your Jira site, for example acme.atlassian.net.`;let n=I(t);return n?n.protocol===`https:`?null:`Jira Cloud sites use https.`:`Enter a site address such as acme.atlassian.net.`},email:e=>P(e)?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(P(e))?null:`Enter a valid email.`:`Enter the email of the Atlassian account.`,jiraToken:ie(`API token`),slackBot:e=>P(e)?/^xoxb-/.test(P(e))?null:`Bot tokens start with xoxb-.`:`Enter the bot token.`,slackApp:e=>P(e)?/^xapp-/.test(P(e))?null:`App-level tokens start with xapp-.`:`Enter the app-level token.`,openaiKey:e=>P(e)?/^sk-/.test(P(e))?null:`OpenAI API keys start with sk-.`:`Enter the API key.`,aivisionUrl:e=>{let t=P(e);if(!t)return`Enter the AI-Vision server URL.`;let n=I(t);return!n||n.protocol!==`http:`&&n.protocol!==`https:`?`Enter a full address, for example http://localhost:5880.`:n.username||n.password?`Leave the user name and password out of the URL. Use the access token.`:null},absolutePath:e=>!P(e)||P(e).startsWith(`/`)?null:`Enter an absolute path, for example /home/me/aivision.`,publicUrl:e=>{let t=P(e);if(!t)return`Enter the address people use to reach this app.`;let n=I(t);return n?n.protocol!==`https:`&&n.hostname!==`localhost`&&n.hostname!==`127.0.0.1`?`Use https. Push and webhooks need it.`:null:`Enter a full address, for example https://qa.example.com.`}};function I(e){let t=e.trim();if(!t)return null;try{return new URL(/^[a-z][a-z0-9+.-]*:\/\//i.test(t)?t:`https://${t}`)}catch{return null}}function L(e){let t=I(e);return t?t.origin:e.trim()}var R=`Contents read, Metadata read, Pull requests read and write, Commit statuses read and write, Issues read and write, Actions read, and Deployments read`,z={anthropicKeys:`https://console.anthropic.com/settings/keys`,githubTokens:`https://github.com/settings/personal-access-tokens/new`,linearKeys:`https://linear.app/settings/account/security`,atlassianTokens:`https://id.atlassian.com/manage-profile/security/api-tokens`,slackNewApp:`https://api.slack.com/apps?new_app=1`,openaiKeys:`https://platform.openai.com/api-keys`,dockerInstall:`https://docs.docker.com/get-started/get-docker/`};function B(e=`localdost`){return JSON.stringify({display_information:{name:e,description:`Always-on QA agents. Mention the bot to ask a dot.`},features:{bot_user:{display_name:e,always_online:!0},app_home:{messages_tab_enabled:!0,messages_tab_read_only_enabled:!0}},oauth_config:{scopes:{bot:[`app_mentions:read`,`chat:write`,`channels:read`,`groups:read`]}},settings:{event_subscriptions:{bot_events:[`app_mention`]},interactivity:{is_enabled:!0},org_deploy_enabled:!1,socket_mode_enabled:!0,token_rotation_enabled:!1}},null,2)}var V={model:{doc:`setup`,anchor:`model`},github:{doc:`github`},linear:{doc:`trackers`,anchor:`linear`},jira:{doc:`trackers`,anchor:`jira`},slack:{doc:`slack`},push:{doc:`setup`,anchor:`push`},publicUrl:{doc:`setup`,anchor:`public-url`},sandbox:{doc:`sandbox`},voice:{doc:`voice`},aivision:{doc:`setup`,anchor:`ai-vision`}};function H(e,t){return`#/docs/${encodeURIComponent(e)}${t?`#${encodeURIComponent(t)}`:``}`}function U(e){let t=V[e];return H(t.doc,t.anchor)}function W(e){return e.docs?.startsWith(`#/docs`)?e.docs:U(e.key)}function G(e){let t=new URLSearchParams(e.split(`?`)[1]??``),n=e=>e&&e in O?e:void 0;return{connect:n(t.get(`connect`)),connected:n(t.get(`connected`)),error:t.get(`error`)??void 0}}var K=encodeURIComponent,q={test:(e,t={})=>o(`/setup/${K(e)}/test`,{method:`POST`,body:t}),save:(e,t)=>o(`/setup/${K(e)}`,{method:`PUT`,body:t}),disconnect:e=>o(`/setup/${K(e)}`,{method:`DELETE`}),saveSettings:(e,t)=>o(`/setup/${K(e)}/settings`,{method:`PATCH`,body:t}),options:(e,t,n={},r)=>o(`/setup/${K(e)}/options`,{signal:r,query:{kind:t,...n}}),detect:e=>o(`/setup/detect`,{signal:e}),githubManifest:(e={})=>o(`/setup/github/manifest`,{method:`POST`,body:e}),startTunnel:()=>o(`/setup/publicUrl/tunnel`,{method:`POST`,body:{}}),stopTunnel:()=>o(`/setup/publicUrl/tunnel`,{method:`DELETE`}),modelChoices:e=>o(`/setup/model/choices`,{signal:e}),switchModel:e=>o(`/setup/model/switch`,{method:`POST`,body:{method:e}}),setPaidFallback:e=>o(`/setup/model/paid-fallback`,{method:`PUT`,body:{allow:e}}),aivisionStart:e=>o(`/setup/aivision/start`,{method:`POST`,body:{},signal:e}),aivisionStop:e=>o(`/setup/aivision/stop`,{method:`POST`,body:{},signal:e}),aivisionDetect:e=>o(`/setup/aivision/detect`,{method:`POST`,body:{},signal:e})};function J(e){return e instanceof t&&(e.status===404||e.status===405)}function Y(e){return J(e)?`This server does not support connecting from the app yet. Update localdost, or set the variables in the guide.`:e instanceof Error?e.message:String(e)}function ae(e,t=document){let n=t.createElement(`form`);n.method=`post`,n.action=e.action;let r=t.createElement(`input`);r.type=`hidden`,r.name=`manifest`,r.value=JSON.stringify(e.manifest),n.appendChild(r),t.body.appendChild(n),n.submit(),n.remove()}var X=f(),oe={model:(0,X.jsx)(`path`,{d:`M12 3.5l1.9 5.1 5.1 1.9-5.1 1.9L12 17.5l-1.9-5.1L5 10.5l5.1-1.9zM18.5 15.5l.8 2.2 2.2.8-2.2.8-.8 2.2-.8-2.2-2.2-.8 2.2-.8z`}),github:(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`circle`,{cx:`6.5`,cy:`5.5`,r:`2`}),(0,X.jsx)(`circle`,{cx:`6.5`,cy:`18.5`,r:`2`}),(0,X.jsx)(`circle`,{cx:`17.5`,cy:`8.5`,r:`2`}),(0,X.jsx)(`path`,{d:`M6.5 7.5v9M17.5 10.5c0 4-4 4-9.5 6`})]}),linear:(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`circle`,{cx:`12`,cy:`12`,r:`8`}),(0,X.jsx)(`path`,{d:`M6 15l3 3M5 11l8 8M6.5 7.5l10 10M9.5 5l9.5 9.5`})]}),jira:(0,X.jsx)(`path`,{d:`M12 3l9 9-9 9-9-9zM12 8l4 4-4 4-4-4z`}),slack:(0,X.jsx)(`path`,{d:`M9.5 4v16M14.5 4v16M4 9.5h16M4 14.5h16`}),push:(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`path`,{d:`M6 16V11a6 6 0 0112 0v5l1.5 2h-15z`}),(0,X.jsx)(`path`,{d:`M10 20.5a2 2 0 004 0`})]}),publicUrl:(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`circle`,{cx:`12`,cy:`12`,r:`8.5`}),(0,X.jsx)(`path`,{d:`M3.5 12h17M12 3.5c2.5 2.6 3.5 5.4 3.5 8.5s-1 5.9-3.5 8.5c-2.5-2.6-3.5-5.4-3.5-8.5s1-5.9 3.5-8.5z`})]}),sandbox:(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`path`,{d:`M12 3l8 4.5v9L12 21l-8-4.5v-9z`}),(0,X.jsx)(`path`,{d:`M4 7.5l8 4.5 8-4.5M12 12v9`})]}),voice:(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`rect`,{x:`9`,y:`3.5`,width:`6`,height:`11`,rx:`3`}),(0,X.jsx)(`path`,{d:`M5.5 11.5a6.5 6.5 0 0013 0M12 18v2.5`})]}),aivision:(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`path`,{d:`M2.5 12S6 5.5 12 5.5 21.5 12 21.5 12 18 18.5 12 18.5 2.5 12 2.5 12z`}),(0,X.jsx)(`circle`,{cx:`12`,cy:`12`,r:`3`})]})};function se({provider:e,method:t,size:r=`md`}){let i=ee(e,t);return i?(0,X.jsx)(`span`,{className:`cx-glyph cx-glyph--brand cx-glyph--${r}`,"aria-hidden":`true`,"data-brand":i,children:(0,X.jsx)(n,{brand:i,size:r===`lg`?22:18})}):(0,X.jsx)(`span`,{className:`cx-glyph cx-glyph--${e} cx-glyph--${r}`,"aria-hidden":`true`,children:(0,X.jsx)(`svg`,{viewBox:`0 0 24 24`,width:r===`lg`?22:18,height:r===`lg`?22:18,fill:`none`,stroke:`currentColor`,strokeWidth:1.75,strokeLinecap:`round`,strokeLinejoin:`round`,children:oe[e]})})}function ce({state:e}){return(0,X.jsxs)(`span`,{className:`cx-state cx-state--${e}`,children:[(0,X.jsx)(`span`,{className:`cx-state__dot`,"aria-hidden":`true`}),D[e]]})}function le({href:e,children:t,className:n}){return(0,X.jsxs)(`a`,{className:[`cx-out`,n??``].filter(Boolean).join(` `),href:e,target:`_blank`,rel:`noreferrer noopener`,children:[t,(0,X.jsx)(d,{size:13}),(0,X.jsx)(`span`,{className:`sr-only`,children:` (opens in a new tab)`})]})}function ue({label:e,value:t,onChange:n,onBlur:r,error:i,hint:a,savedHint:o,placeholder:s,autoFocus:c,name:l}){let[u,d]=(0,T.useState)(!1),f=(0,T.useId)(),p=`${f}-hint`,m=`${f}-err`,h=M(o);return(0,X.jsxs)(`div`,{className:[`field`,i?`field--invalid`:``].filter(Boolean).join(` `),children:[(0,X.jsx)(`label`,{htmlFor:f,className:`field__label`,children:e}),(0,X.jsxs)(`div`,{className:`cx-secret`,children:[(0,X.jsx)(`input`,{id:f,name:l,className:`input cx-secret__input`,type:u?`text`:`password`,autoComplete:`off`,autoCapitalize:`off`,autoCorrect:`off`,spellCheck:!1,"data-1p-ignore":!0,"data-lpignore":`true`,value:t,placeholder:h?`Saved ${h}`:s,onChange:e=>n(e.target.value),onBlur:r,"aria-invalid":i?!0:void 0,"aria-describedby":[i?m:``,a||h?p:``].filter(Boolean).join(` `)||void 0,"data-autofocus":c||void 0}),(0,X.jsxs)(`button`,{type:`button`,className:`cx-secret__toggle`,onClick:()=>d(e=>!e),"aria-pressed":u,disabled:!t,children:[u?`Hide`:`Show`,(0,X.jsxs)(`span`,{className:`sr-only`,children:[` `,e]})]})]}),i?(0,X.jsx)(`p`,{id:m,className:`field__error`,children:i}):null,a||h?(0,X.jsxs)(`p`,{id:p,className:`field__hint`,children:[h?(0,X.jsxs)(X.Fragment,{children:[`Saved key ends in `,h.slice(-4),`. Leave this empty to keep it. `]}):null,a]}):null]})}function Z({result:e,pending:t,pendingText:n=`Testing...`}){return t?(0,X.jsx)(`p`,{className:`cx-test cx-test--pending`,role:`status`,children:n}):e?(0,X.jsxs)(`p`,{className:`cx-test cx-test--${e.ok?`ok`:`fail`}`,role:`status`,children:[e.ok?(0,X.jsx)(m,{size:14}):(0,X.jsx)(u,{size:14}),(0,X.jsx)(`span`,{children:e.message||(e.ok?`Works.`:`Failed.`)})]}):(0,X.jsx)(`p`,{className:`cx-test`,role:`status`})}function Q({label:e,value:t,onChange:r,options:i}){let a=(0,T.useId)();return(0,X.jsxs)(`fieldset`,{className:`cx-choice`,children:[(0,X.jsx)(`legend`,{className:`field__label`,children:e}),i.map(e=>(0,X.jsxs)(`label`,{className:[`cx-choice__item`,t===e.value?`is-selected`:``].filter(Boolean).join(` `),children:[(0,X.jsx)(`input`,{type:`radio`,name:a,value:e.value,checked:t===e.value,onChange:()=>r(e.value)}),(0,X.jsxs)(`span`,{className:`cx-choice__text`,children:[(0,X.jsxs)(`span`,{className:`cx-choice__title`,children:[e.brand&&(0,X.jsx)(n,{brand:e.brand,size:16}),e.title,e.aside]}),(0,X.jsx)(`span`,{className:`cx-choice__help`,children:e.help})]})]},e.value))]})}function de({children:e}){return(0,X.jsx)(`ol`,{className:`cx-steps`,children:e})}function fe({text:e,label:t=`Copy`,size:n=`sm`}){let[r,i]=(0,T.useState)(!1),a=(0,T.useRef)(void 0);return(0,T.useEffect)(()=>()=>window.clearTimeout(a.current),[]),(0,X.jsx)(p,{size:n,variant:`secondary`,icon:r?(0,X.jsx)(m,{size:14}):void 0,onClick:async()=>{try{await navigator.clipboard.writeText(e),i(!0),a.current=window.setTimeout(()=>i(!1),1600)}catch{i(!1)}},children:r?`Copied`:t})}function pe({provider:t,kind:n,parent:r,label:i,multiple:a,value:o,onChange:c,empty:l}){let[u,d]=(0,T.useState)(``),[f,m]=(0,T.useState)(0),[h]=(0,T.useState)(()=>new Set(o)),g=(0,T.useId)(),_=`${t}|${n}|${r??``}|${f}`,[v,y]=(0,T.useState)(null);(0,T.useEffect)(()=>{let e=new AbortController;return q.options(t,n,{parent:r},e.signal).then(e=>y({key:_,options:e.options})).catch(e=>{e instanceof DOMException&&e.name===`AbortError`||y({key:_,error:Y(e)})}),()=>e.abort()},[t,n,r,_]);let b=v?.key===_?v:null,x=b?.options??null,S=b?.error??null,C=(x??[]).filter(e=>!u||`${e.label} ${e.value}`.toLowerCase().includes(u.toLowerCase())).map((e,t)=>({o:e,i:t})).sort((e,t)=>Number(h.has(t.o.value))-Number(h.has(e.o.value))||e.i-t.i).map(e=>e.o),w=e=>{let t=a?o.includes(e)?o.filter(t=>t!==e):[...o,e]:[e];c(t,(x??[]).filter(e=>t.includes(e.value)))};return(0,X.jsxs)(`div`,{className:`cx-picker`,children:[(0,X.jsxs)(`div`,{className:`cx-picker__head`,children:[(0,X.jsx)(`span`,{className:`field__label`,id:`${g}-label`,children:i}),a&&o.length>0&&(0,X.jsxs)(`span`,{className:`cx-picker__count num`,children:[o.length,` selected`]})]}),S?(0,X.jsxs)(`div`,{className:`cx-picker__error`,role:`alert`,children:[(0,X.jsx)(`span`,{children:S}),(0,X.jsx)(p,{size:`sm`,variant:`secondary`,onClick:()=>m(e=>e+1),children:`Retry`})]}):x===null?(0,X.jsx)(`p`,{className:`cx-picker__loading`,role:`status`,children:`Loading...`}):x.length===0?(0,X.jsx)(`p`,{className:`cx-picker__empty`,children:l}):(0,X.jsxs)(X.Fragment,{children:[x.length>8&&(0,X.jsxs)(`div`,{className:`cx-picker__search`,children:[(0,X.jsx)(e,{size:14}),(0,X.jsx)(s,{"aria-label":`Search ${i.toLowerCase()}`,value:u,onChange:e=>d(e.target.value),placeholder:`Search`,type:`search`})]}),(0,X.jsxs)(`ul`,{className:`cx-picker__list`,role:`listbox`,"aria-labelledby":`${g}-label`,"aria-multiselectable":a||void 0,children:[C.map(e=>{let t=o.includes(e.value);return(0,X.jsx)(`li`,{role:`option`,"aria-selected":t,children:(0,X.jsxs)(`label`,{className:[`cx-picker__opt`,t?`is-selected`:``].filter(Boolean).join(` `),children:[(0,X.jsx)(`input`,{type:a?`checkbox`:`radio`,name:`${g}-opt`,checked:t,onChange:()=>w(e.value)}),(0,X.jsxs)(`span`,{className:`cx-picker__opt-text`,children:[(0,X.jsx)(`span`,{className:`cx-picker__opt-label`,children:e.label}),e.hint&&(0,X.jsx)(`span`,{className:`cx-picker__opt-hint`,children:e.hint})]})]})},e.value)}),C.length===0&&(0,X.jsxs)(`li`,{className:`cx-picker__empty`,children:[`No match for "`,u,`".`]})]})]})]})}var $=`model-choices`;function me({onSwitched:e,availableFirst:t=!1,paidFallback:o=!1,autoNote:s=!0}){let c=h($,e=>q.modelChoices(e)),l=c.data??null,u=c.error?Y(c.error):null,d=c.loading||c.refreshing,f=()=>c.reload(),[m,g]=(0,T.useState)(null),[_,v]=(0,T.useState)(null),[y,b]=(0,T.useState)(!1),[x,S]=(0,T.useState)(null),C=async e=>{if(!y){b(!0),S(null);try{await q.setPaidFallback(e),await f()}catch(e){S(Y(e))}finally{b(!1)}}},w=async(t,n)=>{if(!m){g(t),v(null);try{let r=await q.switchModel(t);await f(),e?.(r,`Dots now use ${n}.`)}catch(e){v({method:t,message:Y(e)})}finally{g(null)}}},E=!!l?.envOverride,D=l?t?[...l.choices].sort((e,t)=>Number(t.active)-Number(e.active)||Number(t.available)-Number(e.available)):l.choices:[];return(0,X.jsxs)(`section`,{className:`cx-models`,"aria-label":`Models on this server`,"aria-busy":d||void 0,children:[(0,X.jsxs)(`div`,{className:`cx-section__head`,children:[(0,X.jsx)(`h3`,{className:`cx-section__title`,children:`Models on this server`}),(0,X.jsx)(p,{size:`sm`,variant:`ghost`,icon:(0,X.jsx)(i,{size:14}),loading:d&&!!l,onClick:()=>void f(),children:`Check again`})]}),E&&(0,X.jsxs)(`p`,{className:`cx-note`,children:[`Set by environment: `,(0,X.jsx)(`code`,{className:`cx-code`,children:`${l.envOverride.name}=${l.envOverride.value}`}),`. Remove it and restart localdost to switch here.`]}),s&&l?.autoPicked&&!E&&(0,X.jsx)(`p`,{className:`cx-note`,children:`localdost picked the signed-in subscription it found. Switch to another one at any time.`}),u&&!l?(0,X.jsx)(Z,{result:{ok:!1,message:u}}):l?(0,X.jsx)(`ul`,{className:`cx-models__list`,children:D.map(e=>(0,X.jsxs)(`li`,{className:[`cx-models__row`,e.active?`is-active`:``,e.available?``:`is-missing`].filter(Boolean).join(` `),"data-method":e.method,children:[(0,X.jsx)(n,{brand:e.brand,size:20}),(0,X.jsxs)(`span`,{className:`cx-models__text`,children:[(0,X.jsx)(`span`,{className:`cx-models__label`,children:e.label}),(0,X.jsx)(`span`,{className:[`cx-models__detail`,e.unavailable?`cx-models__detail--warn`:``].filter(Boolean).join(` `),children:e.detail}),e.note&&!e.active&&e.available&&!E&&(0,X.jsx)(`span`,{className:`cx-models__detail`,children:e.note}),_?.method===e.method&&(0,X.jsx)(Z,{result:{ok:!1,message:_.message}})]}),(0,X.jsx)(`span`,{className:`cx-models__action`,children:e.active?(0,X.jsxs)(`span`,{className:`cx-state cx-state--connected`,children:[(0,X.jsx)(`span`,{className:`cx-state__dot`,"aria-hidden":`true`}),`In use`]}):e.available&&!E?(0,X.jsxs)(p,{size:`sm`,variant:`secondary`,loading:m===e.method,onClick:()=>void w(e.method,e.label),children:[`Switch`,(0,X.jsxs)(`span`,{className:`sr-only`,children:[` to `,e.label]})]}):null})]},e.method))}):(0,X.jsx)(`ul`,{className:`cx-models__list`,"aria-label":`Loading models`,children:[0,1,2,3].map(e=>(0,X.jsxs)(`li`,{className:`cx-models__row`,children:[(0,X.jsx)(r,{width:20,height:20,radius:4}),(0,X.jsx)(r,{width:`60%`,height:14})]},e))}),o&&l&&(0,X.jsxs)(`div`,{className:`cx-models__paid`,children:[(0,X.jsx)(a,{checked:!!l.allowPaidFallback,onChange:e=>void C(e),label:`Allow paid fallback`,description:`When your Claude or Codex subscription is capped, let localdost switch to a saved Anthropic API key, which is billed per use.`,disabled:y||!!l.paidFallbackEnv,disabledReason:l.paidFallbackEnv?`Set by environment: ${l.paidFallbackEnv.name}=${l.paidFallbackEnv.value}. Remove it and restart localdost to change this here.`:void 0}),x&&(0,X.jsx)(Z,{result:{ok:!1,message:x}})]})]})}export{v as A,G as C,B as D,A as E,S as F,w as I,x as M,y as N,F as O,C as P,L as S,k as T,ne as _,pe as a,W as b,ue as c,Z as d,q as f,z as g,R as h,fe as i,b as j,g as k,ce as l,ae as m,me as n,le as o,Y as p,Q as r,se as s,$ as t,de as u,E as v,te as w,M as x,re as y};
|
|
2
|
+
//# sourceMappingURL=ModelChoices-BxO1zyyr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.cx{gap:var(--space-5);flex-direction:column;display:flex}.cx-head{justify-content:space-between;align-items:flex-start;gap:var(--space-3);flex-wrap:wrap;display:flex}.cx-head__text{flex:280px;min-width:0}.cx-head__title{align-items:center;gap:var(--space-2);font-size:var(--text-lg);flex-wrap:wrap;display:flex}.cx-head__body{margin-top:var(--space-1);max-width:68ch;color:var(--text-2);text-wrap:pretty}.cx-none{color:var(--text-3)}.cx-group{gap:var(--space-2);flex-direction:column;display:flex}.cx-group__title{align-items:baseline;gap:var(--space-2);padding:0 var(--gutter);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-2);display:flex}.cx-group__count{font-weight:var(--weight-regular);color:var(--text-3)}@media (min-width:640px){.cx-group__title{padding:0}}.cx-row{column-gap:var(--space-3);row-gap:var(--space-2);padding:var(--space-3) var(--gutter);border-bottom:var(--hairline);grid-template-columns:auto minmax(0,1fr);grid-template-areas:"glyph main""glyph actions";align-items:start;display:grid}.cx-row:last-child{border-bottom:0}.cx-row>.cx-glyph,.cx-row>.skeleton:first-child{grid-area:glyph}.cx-row__main{grid-area:main;min-width:0}.cx-row__head{align-items:center;gap:var(--space-1) var(--space-3);flex-wrap:wrap;display:flex}.cx-row__name{font-weight:var(--weight-medium)}.cx-row__detail{font-size:var(--text-sm);color:var(--text-3);overflow-wrap:anywhere;text-wrap:pretty;margin-top:2px}.cx-row--error .cx-row__detail{color:var(--outage-fg)}.cx-row__actions{gap:var(--space-2);flex-wrap:wrap;grid-area:actions;display:flex}.cx-row .cx-test{margin-top:var(--space-1)}@media (min-width:640px){.cx-row{grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"glyph main actions";align-items:center}.cx-row>.skeleton:last-child{grid-area:actions}.cx-row__actions{justify-content:flex-end}}.cx-glyph{border-radius:var(--radius-md);background:var(--surface-2);width:32px;height:32px;color:var(--text-2);box-shadow:inset 0 0 0 1px var(--border);-webkit-user-select:none;user-select:none;flex:none;justify-content:center;align-items:center;display:inline-flex}.cx-glyph--lg{border-radius:var(--radius-lg);width:40px;height:40px}.cx-glyph--model{background:var(--accent-soft);color:var(--accent-soft-text)}.cx-glyph--github,.cx-glyph--sandbox,.cx-glyph--aivision{background:var(--surface-3);color:var(--text)}.cx-glyph--linear,.cx-glyph--jira{background:var(--running-bg);color:var(--running-fg)}.cx-glyph--slack,.cx-glyph--voice{background:var(--attention-bg);color:var(--attention-fg)}.cx-glyph--push,.cx-glyph--publicUrl{background:var(--ok-bg);color:var(--ok-fg)}.cx-glyph--brand{background:var(--surface);color:var(--text)}.cx-state{font-size:var(--text-sm);font-weight:var(--weight-medium);white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.cx-state__dot{border-radius:var(--radius-full);flex:none;width:8px;height:8px}.cx-state--connected{color:var(--ok-fg)}.cx-state--connected .cx-state__dot{background:var(--ok)}.cx-state--env{color:var(--text-2)}.cx-state--env .cx-state__dot{background:var(--ok);box-shadow:0 0 0 2px var(--ok-bg)}.cx-state--demo{color:var(--running-fg)}.cx-state--demo .cx-state__dot{background:var(--running)}.cx-state--missing{color:var(--text-3)}.cx-state--missing .cx-state__dot{box-shadow:inset 0 0 0 1.5px var(--text-3)}.cx-state--error{color:var(--outage-fg)}.cx-state--error .cx-state__dot{background:var(--outage)}.cx-test{font-size:var(--text-sm);align-items:flex-start;gap:6px;min-height:0;display:flex}.cx-test:empty{display:none}.cx-test .icon{flex:none;margin-top:2px}.cx-test--pending{color:var(--text-3)}.cx-test--ok{color:var(--ok-fg)}.cx-test--fail{color:var(--outage-fg)}.cx-sheet.dialog--right{width:min(100vw,460px);max-width:100vw}.cx-sheet .dialog__body{padding:0}.cx-sheet__body{gap:var(--space-5);padding:var(--space-4);flex-direction:column;display:flex}.cx-sheet__foot{padding-top:var(--space-3);border-top:var(--hairline)}.cx-summary{gap:var(--space-3);flex-direction:column;display:flex}.cx-summary__head{align-items:center;gap:var(--space-3);display:flex}.cx-summary__text{flex-direction:column;gap:2px;min-width:0;display:flex}.cx-summary__account{font-weight:var(--weight-medium);overflow-wrap:anywhere}.cx-summary__detail{font-size:var(--text-sm);color:var(--text-3)}.cx-summary__error{padding:var(--space-2) var(--space-3);border-radius:var(--radius);background:var(--outage-bg);color:var(--outage-fg);font-size:var(--text-sm);overflow-wrap:anywhere}.cx-summary__actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.cx-facts{gap:var(--space-1);font-size:var(--text-sm);margin:0;display:grid}.cx-facts>div{gap:var(--space-3);grid-template-columns:110px minmax(0,1fr);display:grid}.cx-facts dt{color:var(--text-3)}.cx-facts dd{margin:0}.cx-section{gap:var(--space-3);padding-top:var(--space-4);border-top:var(--hairline);flex-direction:column;display:flex}.cx-section__head{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.cx-section__title{font-size:var(--text-md);font-weight:var(--weight-semibold)}.cx-section>.btn{align-self:flex-start}.cx-env{gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-md);background:var(--surface-2);color:var(--text-2);font-size:var(--text-sm);flex-direction:column;display:flex}.cx-env strong{color:var(--text)}.cx-env__vars{gap:var(--space-1);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.cx-danger{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-3);border:1px solid var(--outage-bg);border-radius:var(--radius-md);flex-wrap:wrap;display:flex}.cx-danger__text{min-width:0;font-size:var(--text-sm);color:var(--text-2);flex-direction:column;flex:220px;gap:2px;display:flex}.cx-danger__text strong{color:var(--text)}.cx-flow,.cx-form{gap:var(--space-4);flex-direction:column;display:flex}.cx-form__actions{gap:var(--space-2);flex-direction:column;display:flex}.cx-form__buttons{justify-content:flex-end;gap:var(--space-2);flex-wrap:wrap;display:flex}.cx-note{font-size:var(--text-sm);color:var(--text-2);text-wrap:pretty}.cx-choice{gap:var(--space-2);border:0;flex-direction:column;min-width:0;margin:0;padding:0;display:flex}.cx-choice legend{margin-bottom:var(--space-2);padding:0}.cx-choice__item{align-items:flex-start;gap:var(--space-3);padding:var(--space-3);border:var(--hairline);border-radius:var(--radius-md);background:var(--surface);cursor:pointer;display:flex}.cx-choice__item:hover{background:var(--surface-hover)}.cx-choice__item.is-selected{border-color:var(--text-2);background:var(--surface-selected)}.cx-choice__item:has(input:focus-visible){box-shadow:var(--focus-ring)}.cx-choice__item input{accent-color:var(--accent);flex:none;margin:3px 0 0}.cx-choice__text{flex-direction:column;gap:2px;min-width:0;display:flex}.cx-choice__title{align-items:center;gap:var(--space-1) var(--space-2);font-weight:var(--weight-medium);flex-wrap:wrap;display:flex}.cx-choice__help{font-size:var(--text-sm);color:var(--text-3)}.cx-found{padding:1px var(--space-2);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--weight-medium);white-space:nowrap;align-items:center;display:inline-flex}.cx-found--ok{background:var(--ok-bg);color:var(--ok-fg)}.cx-found--no{background:var(--surface-2);color:var(--text-3)}.cx-callout{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-3);border-radius:var(--radius-md);background:var(--surface-2);flex-wrap:wrap;display:flex}.cx-callout--ok{background:var(--ok-bg)}.cx-callout__text{min-width:0;font-size:var(--text-sm);color:var(--text-2);flex-direction:column;flex:220px;gap:2px;display:flex}.cx-callout__text strong{color:var(--text);font-weight:var(--weight-medium)}.cx-steps{gap:var(--space-3);counter-reset:cx-step;font-size:var(--text-sm);color:var(--text-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.cx-steps>li{align-items:flex-start;gap:var(--space-2);counter-increment:cx-step;text-wrap:pretty;flex-direction:column;padding-left:30px;display:flex;position:relative}.cx-steps>li:before{content:counter(cx-step);border-radius:var(--radius-full);background:var(--surface-3);width:20px;height:20px;color:var(--text);font-size:var(--text-xs);font-weight:var(--weight-semibold);font-variant-numeric:tabular-nums;justify-content:center;align-items:center;display:inline-flex;position:absolute;top:-1px;left:0}.cx-steps__actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.cx-code{border-radius:var(--radius-sm);background:var(--surface-3);font-family:var(--font-mono);white-space:nowrap;padding:1px 5px;font-size:.92em}.cx-mono{font-family:var(--font-mono);font-size:var(--text-sm);overflow-wrap:anywhere}.cx-secret{display:flex;position:relative}.cx-secret__input{min-width:0;font-family:var(--font-mono);flex:1;padding-right:64px}.cx-secret__toggle{min-height:var(--control-sm);padding:0 var(--space-2);border-radius:var(--radius-sm);color:var(--text-2);font-size:var(--text-sm);font-weight:var(--weight-medium);background:0 0;border:0;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.cx-secret__toggle:hover:not(:disabled){background:var(--surface-hover);color:var(--text)}.cx-secret__toggle:disabled{color:var(--text-disabled)}.cx-secret__toggle:focus-visible{box-shadow:var(--focus-ring)}.cx-out{font-weight:var(--weight-medium);white-space:nowrap;align-items:center;gap:3px;display:inline-flex}.cx-linkbtn{color:var(--accent);font:inherit;font-size:var(--text-sm);font-weight:var(--weight-medium);cursor:pointer;min-height:var(--tap);background:0 0;border:0;align-self:flex-start;align-items:center;padding:0;display:inline-flex}.cx-linkbtn:hover{text-decoration:underline}.cx-live{align-items:center;gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-md);background:var(--ok-bg);flex-wrap:wrap;display:flex}.cx-live__label{font-size:var(--text-sm);color:var(--ok-fg);font-weight:var(--weight-medium)}.cx-live__url{flex:200px;min-width:0}.cx-picker{gap:var(--space-2);flex-direction:column;display:flex}.cx-picker__head{justify-content:space-between;align-items:baseline;gap:var(--space-2);display:flex}.cx-picker__count{font-size:var(--text-sm);color:var(--text-3)}.cx-picker__search{align-items:center;display:flex;position:relative}.cx-picker__search .icon{color:var(--text-3);pointer-events:none;position:absolute;left:10px}.cx-picker__search .input{flex:1;padding-left:30px}.cx-picker__list{overscroll-behavior:contain;border:var(--hairline);border-radius:var(--radius-md);max-height:264px;margin:0;padding:0;list-style:none;overflow-y:auto}.cx-picker__list>li+li{border-top:var(--hairline)}.cx-picker__opt{align-items:center;gap:var(--space-3);min-height:var(--row);padding:var(--space-2) var(--space-3);cursor:pointer;display:flex}.cx-picker__opt:hover{background:var(--surface-hover)}.cx-picker__opt.is-selected{background:var(--surface-selected)}.cx-picker__opt input{accent-color:var(--accent);flex:none;margin:0}.cx-picker__opt-text{flex-direction:column;min-width:0;display:flex}.cx-picker__opt-label{overflow-wrap:anywhere}.cx-picker__opt-hint{font-size:var(--text-xs);color:var(--text-3)}.cx-picker__loading,.cx-picker__empty{padding:var(--space-3);font-size:var(--text-sm);color:var(--text-3)}.cx-picker__error{justify-content:space-between;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius);background:var(--outage-bg);color:var(--outage-fg);font-size:var(--text-sm);flex-wrap:wrap;display:flex}@media (pointer:coarse){.cx-sheet .input{font-size:16px}.cx-choice__item,.cx-picker__opt{min-height:var(--tap)}}@media (prefers-reduced-motion:reduce){.cx-choice__item,.cx-picker__opt{transition:none}}.cx-models{gap:var(--space-2);flex-direction:column;display:flex}.cx-models__paid{padding-top:var(--space-2)}.cx-models__list{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);margin:0;padding:0;list-style:none}.cx-models__row{align-items:flex-start;gap:var(--space-3);min-height:48px;padding:var(--space-3);display:flex}.cx-models__row+.cx-models__row{border-top:1px solid var(--border)}.cx-models__row>.brand-logo{margin-top:1px}.cx-models__row.is-active{background:var(--surface-selected)}.cx-models__text{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.cx-models__label{font-weight:var(--weight-medium);overflow-wrap:anywhere}.cx-models__detail{font-size:var(--text-sm);color:var(--text-3);overflow-wrap:anywhere}.cx-models__detail--warn{color:var(--attention-fg)}.cx-models__row.is-missing .cx-models__label{color:var(--text-2)}.cx-models__action{flex:none;align-items:center;min-height:28px;display:flex}.cx-masked{-webkit-text-security:disc}.cx-masked:not(:placeholder-shown){font-family:var(--font-mono)}.cx-callout--stack{flex-direction:column;align-items:stretch}.cx-callout--stack .cx-callout__text{flex:none}.cx-callout__row{align-items:center;gap:var(--space-2) var(--space-3);flex-wrap:wrap;display:flex}.cx-callout .cx-mono,.cx-facts .cx-mono{overflow-wrap:anywhere}.cx-log summary{cursor:pointer;font-size:var(--text-sm);color:var(--text-2)}.cx-log pre{max-height:200px;margin:var(--space-2) 0 0;padding:var(--space-2);border-radius:var(--radius-sm);background:var(--surface);font-family:var(--font-mono);white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px;overflow:auto}.cx-section__hint{font-size:var(--text-sm);color:var(--text-2)}.cx-dotlinks{gap:var(--space-2);flex-wrap:wrap;display:flex}.cx-dotlinks .btn__label{overflow-wrap:anywhere}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Bt as e,Cn as t,F as n,G as r,H as i,I as a,J as o,L as s,N as c,P as l,Tn as u,Vn as d,Wn as f,Z as p,at as m,mn as h,pn as g,q as _}from"./ui-DcmhYyYp.js";import{n as v,r as y}from"./store-IqrqHuFR.js";import{a as b,t as x}from"./data-CmXvx3Mj.js";import{y as S}from"./format-BBZ8vFyT.js";import{S as C,n as w,t as ee,x as te}from"./RunnerTry-Dgpp67-s.js";import{o as T,r as E,t as D}from"./LeadDialog-N3Zul9Rw.js";/* empty css */import{i as O,n as k,r as A,t as j}from"./newDotModel-BaLLyw57.js";var M=f(d(),1),N=h(),ne=[{value:`day`,label:`Every day`},{value:`week`,label:`Every Monday, for the week`}],P=Array.from({length:24},(e,t)=>({value:String(t),label:`${String(t).padStart(2,`0`)}:00`}));function F({open:e,onClose:t,onSaved:n,repo:r}){let[i,a]=(0,M.useState)(!1),[s,c]=(0,M.useState)(!1),[l,u]=(0,M.useState)(r??null),[d,f]=(0,M.useState)(e);return e!==d&&(f(e),e&&(a(!1),c(!1),u(r??null))),i?(0,N.jsx)(E,{open:e,onClose:t,onSaved:n}):s?(0,N.jsx)(D,{open:e,onClose:t,onSaved:n}):(0,N.jsxs)(o,{open:e,onClose:t,title:`New dot`,description:l?`Check what the dot inherits, then create it.`:`Pick the repo this dot watches. Everything else comes from Setup.`,size:`md`,className:`nd`,children:[(0,N.jsxs)(`ol`,{className:`nd-steps`,"aria-label":`Steps`,children:[(0,N.jsxs)(`li`,{className:l?`is-done`:`is-current`,"aria-current":l?void 0:`step`,children:[(0,N.jsx)(`span`,{className:`nd-steps__n`,"aria-hidden":`true`,children:`1`}),`Repository`]}),(0,N.jsxs)(`li`,{className:l?`is-current`:``,"aria-current":l?`step`:void 0,children:[(0,N.jsx)(`span`,{className:`nd-steps__n`,"aria-hidden":`true`,children:`2`}),`Review`]})]}),e&&(l?(0,N.jsx)(R,{repo:l,onBack:()=>u(null),onCancel:t,onSaved:n},l):(0,N.jsx)(I,{onPick:u,onCancel:t,onFullForm:()=>a(!0),onLead:()=>c(!0)}))]})}function I({onPick:n,onCancel:a,onFullForm:o,onLead:d}){let[f,p]=(0,M.useState)(``),[m,h]=(0,M.useState)({loading:!0}),[_,v]=(0,M.useState)(0),y=(0,M.useId)();(0,M.useEffect)(()=>{let e=new AbortController,t=setTimeout(()=>{h(e=>({...e,loading:!0})),u.dotRepos(f.trim(),e.signal).then(e=>h({loading:!1,data:e})).catch(t=>{e.signal.aborted||h({loading:!1,error:t,failedQ:f.trim()})})},f?250:0);return()=>{clearTimeout(t),e.abort()}},[f,_]);let b=m.data,x=b&&!b.connected,S;return!b&&m.loading?S=(0,N.jsx)(`div`,{className:`nd-repos`,"aria-busy":`true`,"aria-label":`Loading repositories`,children:[0,1,2,3,4].map(e=>(0,N.jsxs)(`div`,{className:`nd-repo nd-repo--skeleton`,children:[(0,N.jsx)(s,{width:`45%`,height:14}),(0,N.jsx)(s,{width:`30%`,height:10})]},e))}):m.error&&!b?S=(0,N.jsx)(i,{compact:!0,title:m.failedQ?`Searching for "${m.failedQ}" failed`:`Could not load your repositories`,error:m.error,onRetry:()=>v(e=>e+1)}):x?S=(0,N.jsx)(r,{kind:`first-run`,title:`Connect GitHub first`,body:`A dot reads its repo to fill in the test command, setup steps, and base URL. Connect GitHub in Setup, then come back.`,action:(0,N.jsx)(`a`,{className:`btn btn--primary btn--md`,href:`#/setup?connect=github`,children:(0,N.jsx)(`span`,{className:`btn__label`,children:`Open Setup`})})}):b?.error?S=(0,N.jsx)(i,{compact:!0,title:`GitHub did not list your repositories`,error:new t(502,b.error,`/api/dots/repos`),onRetry:()=>v(e=>e+1)}):b&&b.repos.length===0?S=f.trim()?(0,N.jsx)(r,{kind:`filtered`,compact:!0,title:`No repository matches "${f.trim()}"`,body:`Type the full owner/name to look up a repo outside this list.`,action:(0,N.jsx)(g,{size:`sm`,onClick:()=>p(``),children:`Clear search`})}):(0,N.jsx)(r,{kind:`first-run`,compact:!0,title:`This GitHub connection sees no repositories`,body:`Give the token access to a repo, or install the GitHub App on one.`,action:(0,N.jsx)(`a`,{href:`#/setup?connect=github`,children:`Open Setup`})}):b&&(S=(0,N.jsx)(`ul`,{className:`nd-repos`,id:y,"aria-label":`Repositories`,"aria-busy":m.loading||void 0,children:b.repos.map(e=>(0,N.jsx)(L,{repo:e,onPick:()=>n(e.fullName)},e.fullName))})),(0,N.jsxs)(`div`,{className:`nd-body`,children:[!x&&(0,N.jsx)(c,{label:`Search repositories`,hideLabel:!0,children:(0,N.jsxs)(`div`,{className:`nd-search`,children:[(0,N.jsx)(e,{size:16}),(0,N.jsx)(l,{type:`search`,value:f,onChange:e=>p(e.target.value),placeholder:`Search, or type owner/name`,autoComplete:`off`,spellCheck:!1,autoCapitalize:`none`,"aria-controls":y,"data-autofocus":!0})]})}),S,(0,N.jsxs)(`div`,{className:`nd-foot`,children:[(0,N.jsx)(g,{variant:`ghost`,onClick:o,children:`Fill in every field instead`}),(0,N.jsx)(g,{variant:`ghost`,onClick:d,children:`New Lead QA for a team`}),(0,N.jsx)(`span`,{className:`nd-foot__spacer`}),(0,N.jsx)(g,{variant:`ghost`,onClick:a,children:`Cancel`})]})]})}function L({repo:e,onPick:t}){let n=A(e,e=>S(e));return(0,N.jsx)(`li`,{children:(0,N.jsxs)(`button`,{type:`button`,className:`nd-repo`,onClick:t,children:[(0,N.jsxs)(`span`,{className:`nd-repo__text`,children:[(0,N.jsx)(`span`,{className:`nd-repo__name`,children:e.fullName}),n&&(0,N.jsx)(`span`,{className:`nd-repo__meta`,children:n}),e.description&&(0,N.jsx)(`span`,{className:`nd-repo__desc`,children:e.description})]}),(0,N.jsx)(m,{size:16})]})})}function R({repo:e,onBack:o,onCancel:d,onSaved:f}){let m=_(),h=b(),[S,E]=(0,M.useState)({loading:!0}),[D,A]=(0,M.useState)(0),[F,I]=(0,M.useState)(null),[L,R]=(0,M.useState)(new Set),[B,V]=(0,M.useState)(!1),[H,U]=(0,M.useState)(!1),[W,G]=(0,M.useState)(null),K=(0,M.useRef)(null);(0,M.useEffect)(()=>{let t=new AbortController;return u.suggestDot(e,t.signal).then(e=>{E({loading:!1,data:e}),I(k(e))}).catch(e=>{t.signal.aborted||E({loading:!1,error:e})}),()=>t.abort()},[e,D]);let q=(0,M.useMemo)(()=>(h.data??[]).filter(e=>!e.archived).map(e=>e.name),[h.data]),J=(0,M.useMemo)(()=>F?O(F,q):{},[F,q]),Y=Object.keys(J);if(S.loading||!S.data&&!S.error)return(0,N.jsxs)(`div`,{className:`nd-body`,"aria-busy":`true`,children:[(0,N.jsxs)(`p`,{className:`nd-reading`,role:`status`,children:[`Reading `,e]}),(0,N.jsx)(`dl`,{className:`nd-review`,children:[0,1,2,3,4,5].map(e=>(0,N.jsxs)(`div`,{className:`nd-item`,children:[(0,N.jsx)(`dt`,{children:(0,N.jsx)(s,{width:80,height:12})}),(0,N.jsxs)(`dd`,{children:[(0,N.jsx)(s,{width:`70%`,height:14}),(0,N.jsx)(s,{width:`40%`,height:10})]})]},e))})]});if(!S.data||!F){let n=S.error instanceof t&&S.error.status===409;return(0,N.jsxs)(`div`,{className:`nd-body`,children:[n?(0,N.jsx)(r,{kind:`first-run`,title:`Connect GitHub first`,body:`localdost reads the repo to fill in the dot.`,action:(0,N.jsx)(`a`,{className:`btn btn--primary btn--md`,href:`#/setup?connect=github`,children:(0,N.jsx)(`span`,{className:`btn__label`,children:`Open Setup`})})}):(0,N.jsx)(i,{compact:!0,title:`Could not read ${e}`,error:S.error,onRetry:()=>{E({loading:!0}),A(e=>e+1)}}),(0,N.jsx)(`div`,{className:`nd-foot`,children:(0,N.jsx)(g,{variant:`ghost`,icon:(0,N.jsx)(p,{size:14}),onClick:o,children:`Back`})})]})}let X=S.data,Z=(e,t)=>I(n=>n&&{...n,[e]:t}),Q=e=>R(t=>new Set(t).add(e)),$=e=>B||L.has(e)?J[e]:void 0,re=F.tracker===`none`?null:X.tracker.choices[Number(F.tracker)]?.label??null,ie=k(X),ae=async()=>{if(V(!0),G(null),Y.length){R(e=>new Set([...e,...Y.map(e=>e===`mission`?`brief`:e===`prAuthors`||e===`prTeam`?`prScope`:e)])),requestAnimationFrame(()=>K.current?.focus());return}U(!0);try{let e=await u.createDot(j(X,F));y(x.dots,t=>[...(t??[]).filter(t=>t.id!==e.id),e]),v(x.dots),m.show({tone:`success`,title:`${e.name} is watching`}),f?.(e),d()}catch(e){G(e),requestAnimationFrame(()=>K.current?.focus())}finally{U(!1)}},oe=()=>{if(J.command)return{error:`Test command: ${J.command}`};let e=j(X,F);return{runner:e.runner??{mode:`local`},repo:e.repo??null,...e.baseUrl?{baseUrl:e.baseUrl}:{}}};return(0,N.jsxs)(`div`,{className:`nd-body`,children:[(0,N.jsxs)(`div`,{className:`nd-repohead`,children:[(0,N.jsx)(`span`,{className:`nd-repohead__name`,children:X.repo.fullName}),(0,N.jsx)(`span`,{className:`nd-repohead__meta`,children:[X.repo.defaultBranch,X.repo.language,X.repo.private?`private`:``].filter(Boolean).join(`, `)})]}),B&&(Y.length>0||W!=null)&&(0,N.jsx)(`div`,{className:`form-alert`,role:`alert`,tabIndex:-1,ref:K,children:W?(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(`p`,{className:`form-alert__title`,children:`Could not create the dot`}),(0,N.jsxs)(`p`,{children:[W instanceof Error?W.message:`The server did not accept it.`,` Your changes are still here.`]})]}):(0,N.jsxs)(`p`,{className:`form-alert__title`,children:[`Fix `,Y.length,` `,Y.length===1?`field`:`fields`,` to create the dot`]})}),(0,N.jsxs)(`dl`,{className:`nd-review`,children:[(0,N.jsx)(z,{label:`Name`,source:X.name.source,editing:L.has(`name`),onEdit:()=>Q(`name`),value:F.name,children:(0,N.jsx)(c,{label:`Name`,hideLabel:!0,error:$(`name`),children:(0,N.jsx)(l,{value:F.name,onChange:e=>Z(`name`,e.target.value),autoComplete:`off`,maxLength:80,"data-autofocus":!0})})}),(0,N.jsx)(z,{label:`PR scope`,source:te(F),editing:L.has(`prScope`),onEdit:()=>Q(`prScope`),value:C(F),empty:`Every PR`,children:(0,N.jsx)(T,{draft:F,onChange:(e,t)=>Z(e,t),errors:{prAuthors:$(`prAuthors`),prTeam:$(`prTeam`)},onBlur:Q,hideTitle:!0})}),(0,N.jsx)(z,{label:`Tracker`,source:F.tracker===ie.tracker?X.tracker.source:`Picked here`,editing:L.has(`tracker`),onEdit:X.tracker.choices.length?()=>Q(`tracker`):void 0,value:re,empty:X.tracker.choices.length?`None`:`None. Connect Linear or Jira in Setup to review tickets.`,setupLink:!X.tracker.choices.length,children:(0,N.jsx)(c,{label:`Tracker`,hideLabel:!0,children:(0,N.jsx)(n,{value:F.tracker,onChange:e=>Z(`tracker`,e.target.value),options:[{value:`none`,label:`None`},...X.tracker.choices.map((e,t)=>({value:String(t),label:e.label}))]})})}),(0,N.jsx)(z,{label:`Base URL`,source:F.baseUrl===(X.baseUrl.value??``)?X.baseUrl.source:`Typed here`,editing:L.has(`baseUrl`),onEdit:()=>Q(`baseUrl`),value:F.baseUrl||null,empty:`Not set`,mono:!0,children:(0,N.jsx)(c,{label:`Base URL`,hideLabel:!0,error:$(`baseUrl`),hint:`Where tests run when no preview URL is known. Leave empty when the Playwright config starts the app.`,children:(0,N.jsx)(l,{type:`url`,inputMode:`url`,value:F.baseUrl,onChange:e=>Z(`baseUrl`,e.target.value),placeholder:`https://staging.acme.com`,autoComplete:`off`})})}),(0,N.jsx)(z,{label:`Setup steps`,source:F.setup===(X.setup.value??``)?X.setup.source:`Typed here`,editing:L.has(`setup`),onEdit:()=>Q(`setup`),value:F.setup||null,empty:`None`,mono:!0,pre:!0,children:(0,N.jsx)(c,{label:`Setup steps`,hideLabel:!0,hint:`One step per line. They run through the shell before the tests.`,children:(0,N.jsx)(a,{className:`wd-mono`,rows:3,value:F.setup,onChange:e=>Z(`setup`,e.target.value),spellCheck:!1})})}),(0,N.jsx)(z,{label:`Test command`,source:F.command===(X.command.value??``)?X.command.source:`Typed here`,editing:L.has(`command`),onEdit:()=>Q(`command`),value:F.command||null,empty:`npx playwright test`,mono:!0,children:(0,N.jsx)(c,{label:`Test command`,hideLabel:!0,error:$(`command`),hint:`Runs without a shell.`,children:(0,N.jsx)(l,{className:`wd-mono`,value:F.command,onChange:e=>Z(`command`,e.target.value),autoComplete:`off`,spellCheck:!1})})}),(0,N.jsx)(z,{label:`Model`,source:X.model.source,value:X.model.value,empty:`Not set`,setupLink:!0}),(0,N.jsx)(z,{label:`AI-Vision`,source:X.aivision.source,value:X.aivision.value?`On`:`Off`,setupLink:!0}),(0,N.jsxs)(z,{label:`Role`,source:L.has(`brief`)?`Edited here`:X.mission.source,editing:L.has(`brief`),onEdit:()=>Q(`brief`),value:X.role.label,extra:!L.has(`brief`)&&(0,N.jsxs)(`ul`,{className:`nd-brief`,children:[(0,N.jsxs)(`li`,{children:[(0,N.jsx)(`span`,{className:`nd-brief__k`,children:`Mission`}),` `,F.mission]}),(0,N.jsxs)(`li`,{children:[(0,N.jsx)(`span`,{className:`nd-brief__k`,children:`Notify when`}),` `,F.notifyWhen]}),(0,N.jsxs)(`li`,{children:[(0,N.jsx)(`span`,{className:`nd-brief__k`,children:`Must not`}),` `,F.mustNot]})]}),children:[(0,N.jsx)(c,{label:`Mission`,error:$(`mission`),children:(0,N.jsx)(a,{rows:2,value:F.mission,onChange:e=>Z(`mission`,e.target.value)})}),(0,N.jsx)(c,{label:`Notify when`,children:(0,N.jsx)(a,{rows:2,value:F.notifyWhen,onChange:e=>Z(`notifyWhen`,e.target.value)})}),(0,N.jsx)(c,{label:`Must not`,children:(0,N.jsx)(a,{rows:2,value:F.mustNot,onChange:e=>Z(`mustNot`,e.target.value)})})]})]}),X.notes.length>0&&(0,N.jsx)(`ul`,{className:`nd-notes`,children:X.notes.map(e=>(0,N.jsx)(`li`,{children:e},e))}),(0,N.jsxs)(`details`,{className:`nd-advanced`,children:[(0,N.jsx)(`summary`,{children:`Advanced`}),(0,N.jsxs)(`div`,{className:`nd-advanced__body`,children:[(0,N.jsx)(c,{label:`Path filters`,hint:`Comma separated. Only changes under these paths trigger runs.`,children:(0,N.jsx)(l,{value:F.pathFilters,onChange:e=>Z(`pathFilters`,e.target.value),placeholder:`src/checkout, src/payments`,autoComplete:`off`})}),(0,N.jsx)(c,{label:`Smoke grep`,hint:X.smokeGrep.source,children:(0,N.jsx)(l,{value:F.smokeGrep,onChange:e=>Z(`smokeGrep`,e.target.value),placeholder:`@smoke`,autoComplete:`off`,spellCheck:!1})}),(0,N.jsx)(c,{label:`Instructions`,hint:w,children:(0,N.jsx)(a,{rows:3,value:F.instructions,onChange:e=>Z(`instructions`,e.target.value)})}),(0,N.jsxs)(`div`,{className:`wd-grid`,children:[(0,N.jsx)(c,{label:`Slack channel`,error:$(`slackChannel`),children:(0,N.jsx)(l,{value:F.slackChannel,onChange:e=>Z(`slackChannel`,e.target.value),placeholder:`#releases`,autoComplete:`off`})}),(0,N.jsx)(c,{label:`Digest at`,hint:`Server local time.`,children:(0,N.jsx)(n,{value:F.digestHour,onChange:e=>Z(`digestHour`,e.target.value),options:P})}),(0,N.jsx)(c,{label:`Digest`,children:(0,N.jsx)(n,{value:F.digestEvery??`day`,onChange:e=>Z(`digestEvery`,e.target.value===`week`?`week`:`day`),options:ne})})]}),(0,N.jsx)(ee,{getInput:oe}),(0,N.jsx)(`p`,{className:`nd-note`,children:`Site checks, status pages and rules: change them on the dot page after you create it.`})]})]}),(0,N.jsxs)(`div`,{className:`nd-foot`,children:[(0,N.jsx)(g,{variant:`ghost`,icon:(0,N.jsx)(p,{size:14}),onClick:o,children:`Back`}),(0,N.jsx)(`span`,{className:`nd-foot__spacer`}),(0,N.jsx)(g,{variant:`primary`,loading:H,onClick:()=>void ae(),children:`Create dot`})]})]})}function z({label:e,source:t,value:n,empty:r=`Not set`,editing:i,onEdit:a,mono:o,pre:s,setupLink:c,extra:l,children:u}){return(0,N.jsxs)(`div`,{className:`nd-item`,children:[(0,N.jsx)(`dt`,{children:e}),(0,N.jsxs)(`dd`,{children:[i?(0,N.jsx)(`div`,{className:`nd-item__edit`,children:u}):(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(`span`,{className:[`nd-item__value`,o&&n?`nd-mono`:``,s&&n?`nd-pre`:``,n?``:`nd-item__value--empty`].filter(Boolean).join(` `),children:n??r}),l]}),(0,N.jsxs)(`span`,{className:`nd-item__source`,children:[(0,N.jsx)(`span`,{className:`sr-only`,children:`Source: `}),t]})]}),(0,N.jsx)(`div`,{className:`nd-item__action`,children:!i&&a?(0,N.jsx)(`button`,{type:`button`,className:`link-btn`,onClick:a,"aria-label":`Edit ${e.toLowerCase()}`,children:`Edit`}):c?(0,N.jsx)(`a`,{href:`#/setup`,"aria-label":`Change ${e.toLowerCase()} in Setup`,children:`Setup`}):null})]})}export{F as t};
|
|
2
|
+
//# sourceMappingURL=NewDotDialog-CDPUWmgN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.nd .dialog__body{padding-bottom:0}.nd-steps{gap:var(--space-4);margin:0 0 var(--space-4);font-size:var(--text-sm);color:var(--text-3);flex-wrap:wrap;padding:0;list-style:none;display:flex}.nd-steps li{align-items:center;gap:var(--space-2);display:inline-flex}.nd-steps__n{border-radius:var(--radius-full);border:1px solid var(--border-strong);width:20px;height:20px;font-size:var(--text-xs);font-variant-numeric:tabular-nums;justify-content:center;align-items:center;display:inline-flex}.nd-steps .is-current{color:var(--text);font-weight:var(--weight-medium)}.nd-steps .is-current .nd-steps__n{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.nd-steps .is-done .nd-steps__n{border-color:var(--text-3)}.nd-body{gap:var(--space-4);flex-direction:column;min-width:0;display:flex}.nd-search{color:var(--text-3);align-items:center;display:flex;position:relative}.nd-search>svg{left:var(--space-3);pointer-events:none;position:absolute}.nd-search input{width:100%;padding-left:calc(var(--space-3) + 16px + var(--space-2));font-size:max(16px, var(--text-md))}.nd-repos{border:var(--hairline);border-radius:var(--radius-md);margin:0;padding:0;list-style:none;overflow:hidden}.nd-repos>li+li,.nd-repo--skeleton+.nd-repo--skeleton{border-top:var(--hairline)}.nd-repo{align-items:center;gap:var(--space-3);width:100%;min-height:var(--row-comfortable);padding:var(--space-2) var(--space-3);background:var(--surface);color:var(--text);text-align:left;font:inherit;cursor:pointer;border:0;display:flex}.nd-repo:hover{background:var(--surface-hover)}.nd-repo:focus-visible{box-shadow:inset 0 0 0 2px var(--accent-brand);outline:none}.nd-repo>svg{color:var(--text-3);flex:none}.nd-repo--skeleton{cursor:default;flex-direction:column;justify-content:center;align-items:flex-start}.nd-repo__text{gap:var(--space-0-5);flex-direction:column;flex:1;min-width:0;display:flex}.nd-repo__name{font-weight:var(--weight-medium);overflow-wrap:anywhere}.nd-repo__meta,.nd-repo__desc{font-size:var(--text-sm);color:var(--text-3)}.nd-repo__desc{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.nd-reading{font-size:var(--text-sm);color:var(--text-2)}.nd-repohead{align-items:baseline;gap:var(--space-1) var(--space-3);flex-wrap:wrap;display:flex}.nd-repohead__name{font-weight:var(--weight-semibold);overflow-wrap:anywhere}.nd-repohead__meta{font-size:var(--text-sm);color:var(--text-3)}.nd-review{border:var(--hairline);border-radius:var(--radius-md);margin:0}.nd-item{gap:var(--space-1) var(--space-3);padding:var(--space-3);grid-template-columns:112px minmax(0,1fr) auto;display:grid}.nd-item+.nd-item{border-top:var(--hairline)}.nd-item dt{font-size:var(--text-sm);color:var(--text-2);padding-top:1px}.nd-item dd{gap:var(--space-1);flex-direction:column;min-width:0;margin:0;display:flex}.nd-item__value{overflow-wrap:anywhere}.nd-item__value--empty{color:var(--text-3)}.nd-mono{font-family:var(--font-mono);font-size:var(--text-sm)}.nd-pre{white-space:pre-wrap}.nd-item__source{font-size:var(--text-xs);color:var(--text-3);text-wrap:pretty}.nd-item__action{font-size:var(--text-sm)}.nd-item__action .link-btn,.nd-item__action a{position:relative}.nd-item__action .link-btn:after,.nd-item__action a:after{content:"";position:absolute;inset:-10px -8px}.nd-item__edit{gap:var(--space-3);flex-direction:column;display:flex}.nd-brief{gap:var(--space-1);margin:var(--space-1) 0 0;font-size:var(--text-sm);color:var(--text-2);text-wrap:pretty;flex-direction:column;padding:0;list-style:none;display:flex}.nd-brief__k{color:var(--text-3)}.nd-notes{padding-left:var(--space-4);font-size:var(--text-sm);color:var(--text-2);margin:0}.nd-advanced{border:var(--hairline);border-radius:var(--radius-md)}.nd-advanced>summary{min-height:var(--tap);padding:0 var(--space-3);cursor:pointer;font-weight:var(--weight-medium);align-items:center;display:flex}.nd-advanced>summary:focus-visible{box-shadow:var(--focus-ring);border-radius:var(--radius-md);outline:none}.nd-advanced__body{gap:var(--space-4);padding:0 var(--space-3) var(--space-3);flex-direction:column;display:flex}.nd-note{font-size:var(--text-sm);color:var(--text-2)}.nd-foot{align-items:center;gap:var(--space-2);margin:0 calc(-1 * var(--space-4));padding:var(--space-3) var(--space-4);background:var(--surface);border-top:var(--hairline);flex-wrap:wrap;display:flex;position:sticky;bottom:0}.nd-foot__spacer{flex:1}@media (max-width:480px){.nd-item{grid-template-columns:minmax(0,1fr) auto}.nd-item dt{grid-column:1/-1}.nd-item dd{grid-column:1}.nd-item__action{grid-area:2/2}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{F as e,J as t,N as n,P as r,Tn as i,Vn as a,Wn as o,mn as s,pn as c}from"./ui-DcmhYyYp.js";import{r as l}from"./router-W6nZsQ33.js";import{i as u,n as d}from"./store-IqrqHuFR.js";import{y as f}from"./model-BIQy5IVG.js";var p=o(a(),1);function m(e){let t=new Set(e.map(e=>e.id)),n=new Map;for(let r of e){let e=r.parentId&&t.has(r.parentId)?r.parentId:``;n.set(e,[...n.get(e)??[],r])}for(let e of n.values())e.sort((e,t)=>e.position-t.position||e.name.localeCompare(t.name));let r=[],i=(e,t)=>{for(let a of n.get(e)??[])r.push({folder:a,depth:t}),i(a.id,t+1)};return i(``,0),r}function h(e,t){let n=[],r=new Set;for(let i=e.find(e=>e.id===t);i&&!r.has(i.id);i=e.find(e=>e.id===i.parentId))r.add(i.id),n.unshift(i.name);return n.join(` / `)}function g(e,t){let n=0,r=[t];for(let t=0;t<r.length;t++){let i=e.find(e=>e.id===r[t]);i&&(n+=i.caseCount);for(let n of e)n.parentId===r[t]&&r.push(n.id)}return n}var _=s(),v=e=>e instanceof Error?e.message:`Something went wrong.`;function y({dotId:a,open:o,onClose:s,preset:m}){let g=u(o?`suites:${a}`:null,e=>i.suites(a,e)),y=u(o?`plans:${a}`:null,e=>i.plans(a,e)),b=u(o?`folders:${a}`:null,e=>i.folders(a,e)),[x,S]=(0,p.useState)(`all`),[C,w]=(0,p.useState)(``),[T,E]=(0,p.useState)(``),[D,O]=(0,p.useState)(``),[k,A]=(0,p.useState)(``),[j,M]=(0,p.useState)(``),[N,P]=(0,p.useState)(``),[F,I]=(0,p.useState)(!1),[L,R]=(0,p.useState)(null),z=async()=>{I(!0),R(null);try{let e={...C.trim()?{name:C.trim()}:{},...T.trim()?{environment:T.trim()}:{},...D.trim()||k.trim()?{config:{...D.trim()?{browser:D.trim()}:{},...k.trim()?{os:k.trim()}:{}}}:{},...j.trim()?{buildSha:j.trim()}:{},...N.trim()?{assignee:N.trim()}:{}},t;if(m)t={...e,caseIds:m.caseIds};else if(x.startsWith(`suite:`))t={...e,suiteId:x.slice(6)};else if(x.startsWith(`plan:`))t={...e,planId:x.slice(5)};else{let n=x.startsWith(`folder:`)?x.slice(7):void 0,r=await i.cases(a,n?{folder:n}:{});if(t={...e,caseIds:r.cases.map(e=>e.id)},!t.caseIds?.length)throw Error(`No draft or ready test cases to run there.`)}let n=await i.createTestRuns(a,t);d(f(a)),s(),n[0]&&l({name:`testRun`,id:n[0].id,dotId:a})}catch(e){R(v(e))}finally{I(!1)}},B=b.data?.folders??[];return(0,_.jsx)(t,{open:o,onClose:s,title:`New test run`,description:`A manual pass over a set of test cases. Each test case becomes one item to work and mark.`,size:`md`,className:`tr-new`,footer:(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(c,{onClick:s,children:`Cancel`}),(0,_.jsx)(c,{variant:`primary`,loading:F,onClick:()=>void z(),children:`Start test run`})]}),children:(0,_.jsxs)(`form`,{className:`tr-form`,onSubmit:e=>{e.preventDefault(),z()},children:[m?(0,_.jsx)(`p`,{className:`tr-form__preset`,children:m.label}):(0,_.jsx)(n,{label:`Cases from`,hint:`A plan with several configurations starts one test run for each.`,children:(0,_.jsxs)(e,{value:x,onChange:e=>S(e.target.value),"data-autofocus":!0,children:[(0,_.jsx)(`option`,{value:`all`,children:`Every draft and ready test case`}),(g.data??[]).length>0&&(0,_.jsx)(`optgroup`,{label:`Suites`,children:(g.data??[]).map(e=>(0,_.jsx)(`option`,{value:`suite:${e.id}`,children:`${e.name} (${e.caseCount})`},e.id))}),(y.data??[]).length>0&&(0,_.jsx)(`optgroup`,{label:`Plans`,children:(y.data??[]).map(e=>(0,_.jsx)(`option`,{value:`plan:${e.id}`,children:e.configs.length>1?`${e.name} (${e.configs.length} configurations)`:e.name},e.id))}),B.length>0&&(0,_.jsx)(`optgroup`,{label:`Folders`,children:B.map(e=>(0,_.jsx)(`option`,{value:`folder:${e.id}`,children:h(B,e.id)},e.id))})]})}),(0,_.jsx)(n,{label:`Name`,hint:`Leave empty to use the suite, plan, or today's date.`,children:(0,_.jsx)(r,{value:C,maxLength:200,onChange:e=>w(e.target.value)})}),(0,_.jsxs)(`div`,{className:`tr-form__row`,children:[(0,_.jsx)(n,{label:`Environment`,children:(0,_.jsx)(r,{value:T,placeholder:`staging`,maxLength:80,onChange:e=>E(e.target.value)})}),(0,_.jsx)(n,{label:`Assignee`,children:(0,_.jsx)(r,{value:N,maxLength:80,onChange:e=>P(e.target.value)})})]}),(0,_.jsxs)(`div`,{className:`tr-form__row`,children:[(0,_.jsx)(n,{label:`Browser`,children:(0,_.jsx)(r,{value:D,placeholder:`Chrome`,maxLength:60,onChange:e=>O(e.target.value)})}),(0,_.jsx)(n,{label:`OS`,children:(0,_.jsx)(r,{value:k,placeholder:`macOS`,maxLength:60,onChange:e=>A(e.target.value)})})]}),(0,_.jsx)(n,{label:`Build`,hint:`The commit sha under test, if you know it.`,children:(0,_.jsx)(r,{value:j,className:`num`,maxLength:40,onChange:e=>M(e.target.value)})}),L&&(0,_.jsx)(`p`,{className:`field__error`,role:`alert`,children:L}),(0,_.jsx)(`button`,{type:`submit`,hidden:!0})]})})}export{g as i,h as n,m as r,y as t};
|
|
2
|
+
//# sourceMappingURL=NewTestRunDialog-BQBthVHE.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{mn as e}from"./ui-DcmhYyYp.js";var t=e();function n({text:e}){let n=e.split(/([\w-]+\/[\w-]+(?:\.[\w-]+)*)/);return(0,t.jsx)(t.Fragment,{children:n.map((e,n)=>n%2?(0,t.jsx)(`span`,{className:`health-name`,children:e},n):e)})}export{n as t};
|
|
2
|
+
//# sourceMappingURL=NoBreakNames-Csxdqdt6.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{N as e,Nn as t,P as n,Vn as r,Wn as i,kn as a,mn as o,pn as s,q as c}from"./ui-DcmhYyYp.js";import{r as l}from"./router-W6nZsQ33.js";import{n as u,o as d}from"./store-IqrqHuFR.js";import{m as f}from"./phoneApi-BG_1-M-D.js";import{t as p}from"./usePush-Dsm-TjlG.js";import{t as m}from"./PushSection-CmqHlE_2.js";/* empty css */var h=i(r(),1),g=o();function _(){let e=typeof navigator>`u`?``:navigator.userAgent;return/iPhone/.test(e)?`iPhone`:/iPad/.test(e)?`iPad`:/Android/.test(e)?`Android phone`:`Phone`}function v(){try{return!!navigator.standalone||window.matchMedia(`(display-mode: standalone)`).matches}catch{return!1}}function y({code:r}){let i=c(),[o,y]=(0,h.useState)(r??``),[b,x]=(0,h.useState)(_),[S,C]=(0,h.useState)(!1),[w,T]=(0,h.useState)(null),[E,D]=(0,h.useState)(null),[O,k]=(0,h.useState)(()=>a().startsWith(`qdp.`)),[A,j]=(0,h.useState)(!1),M=typeof navigator<`u`&&p({ua:navigator.userAgent,maxTouchPoints:navigator.maxTouchPoints??0}),N=v();(0,h.useEffect)(()=>{if(!a().startsWith(`qdp.`))return;let e=new AbortController;return f.me(e.signal).then(e=>D(e.kind===`device`?e.device:null)).catch(()=>D(null)).finally(()=>k(!1)),()=>e.abort()},[]),(0,h.useEffect)(()=>{r&&l(`#/pair`,{replace:!0})},[r]);let P=async e=>{if(e.preventDefault(),!o.trim()){T(`Type the code shown on the computer.`);return}C(!0),T(null);try{let e=await f.exchange({code:o.trim(),name:b.trim()||_()});t(e.token),d.restart(),u(``),D(e.device),j(!0),y(``)}catch(e){T(e instanceof Error?e.message:String(e))}finally{C(!1)}},F=async()=>{try{await f.unpairSelf()}catch{}t(``),d.restart(),u(``),D(null),j(!1),i.show({title:`This phone is unpaired`})};return O?(0,g.jsx)(`div`,{className:`page pair-page`,"aria-busy":`true`}):E?(0,g.jsxs)(`div`,{className:`page pair-page qd-touch`,children:[(0,g.jsxs)(`div`,{className:`pair-page__done`,role:`status`,children:[(0,g.jsx)(`h1`,{className:`pair-page__title`,children:A?`Paired`:`This phone is paired`}),(0,g.jsxs)(`p`,{className:`pair-page__body`,children:[`Paired as `,(0,g.jsx)(`strong`,{children:E.name}),`. Inbox shows what waits for you.`]}),(0,g.jsx)(s,{variant:`primary`,size:`lg`,block:!0,onClick:()=>l(`#/inbox`),children:`Open Inbox`})]}),M&&!N&&(0,g.jsxs)(`section`,{className:`pair-page__ios`,"aria-labelledby":`pair-ios`,children:[(0,g.jsx)(`h2`,{id:`pair-ios`,className:`pair-page__sub`,children:`Add to Home Screen`}),(0,g.jsx)(`p`,{children:`iPhone keeps Home Screen apps apart from Safari, and sends notifications only to Home Screen apps.`}),(0,g.jsxs)(`ol`,{className:`pair__steps`,children:[(0,g.jsx)(`li`,{children:`Tap Share, then Add to Home Screen.`}),(0,g.jsx)(`li`,{children:`Open localdost from the Home Screen.`}),(0,g.jsx)(`li`,{children:`Make a new code on the computer and pair once more there.`})]})]}),(!M||N)&&(0,g.jsx)(m,{}),(0,g.jsx)(s,{variant:`ghost`,onClick:()=>void F(),children:`Unpair this phone`})]}):(0,g.jsxs)(`div`,{className:`page pair-page qd-touch`,children:[(0,g.jsx)(`header`,{className:`page__header`,children:(0,g.jsxs)(`div`,{children:[(0,g.jsx)(`h1`,{className:`page__title`,children:`Pair this phone`}),(0,g.jsx)(`p`,{className:`page__subtitle`,children:`On the computer, open Setup, then Phone, then Pair a phone. Type the code it shows.`})]})}),M&&!N&&(0,g.jsx)(`p`,{className:`pair-page__hint`,role:`note`,children:`For notifications on iPhone, add localdost to the Home Screen first (Share, then Add to Home Screen) and pair from there.`}),(0,g.jsxs)(`form`,{className:`pair-page__form`,onSubmit:e=>void P(e),noValidate:!0,children:[(0,g.jsx)(e,{label:`Invite code`,hint:`8 letters and digits, for example K7QM-4ZTP.`,error:w??void 0,children:(0,g.jsx)(n,{value:o,onChange:e=>y(e.target.value.toUpperCase()),autoComplete:`one-time-code`,autoCapitalize:`characters`,autoCorrect:`off`,spellCheck:!1,inputMode:`text`,maxLength:12,className:`pair-page__code`,"data-testid":`pair-code-input`})}),(0,g.jsx)(e,{label:`Name for this phone`,hint:`Shown in the paired phones list on the computer.`,children:(0,g.jsx)(n,{value:b,onChange:e=>x(e.target.value),maxLength:60,autoComplete:`off`})}),(0,g.jsx)(s,{type:`submit`,variant:`primary`,size:`lg`,block:!0,loading:S,children:`Pair this phone`})]})]})}export{y as default};
|
|
2
|
+
//# sourceMappingURL=Pair-omex_K7H.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Q as e,cn as t,mn as n,pn as r,sn as i}from"./ui-DcmhYyYp.js";import{n as a}from"./usePush-Dsm-TjlG.js";var o=n();function s(){let{state:t,busy:n,error:s,enable:l,disable:u,check:d}=a();return(0,o.jsx)(i,{title:`Notifications`,description:`Failures, outages and items that wait for you, sent to this device.`,children:(0,o.jsxs)(`div`,{className:`push`,children:[(0,o.jsx)(c,{state:t}),(0,o.jsxs)(`div`,{className:`push__actions`,children:[t.kind===`off`&&(0,o.jsx)(r,{variant:`primary`,icon:(0,o.jsx)(e,{size:14}),loading:n,onClick:()=>void l(),children:`Turn on notifications`}),t.kind===`on`&&(0,o.jsx)(r,{variant:`secondary`,loading:n,onClick:()=>void u(),children:`Turn off on this device`}),(t.kind===`denied`||t.kind===`no-worker`)&&(0,o.jsx)(r,{variant:`secondary`,onClick:d,children:`Check again`})]}),s&&(0,o.jsx)(`p`,{className:`push__error`,role:`alert`,children:s})]})})}function c({state:e}){switch(e.kind){case`checking`:return(0,o.jsx)(`p`,{className:`push__text muted`,children:`Checking this browser.`});case`on`:return(0,o.jsxs)(`p`,{className:`push__text`,children:[(0,o.jsx)(t,{tone:`ok`,children:`On`}),` This device gets notifications.`]});case`off`:return(0,o.jsx)(`p`,{className:`push__text`,children:`Off on this device.`});case`denied`:return(0,o.jsx)(`p`,{className:`push__text`,children:`Notifications are blocked for this site. Allow them in the browser site settings, then check again.`});case`no-worker`:return(0,o.jsx)(`p`,{className:`push__text`,children:`The app worker is not running, so push cannot start. Open the production build (npm run demo), not the dev server.`});case`ios-browser`:return(0,o.jsxs)(`div`,{className:`push__text`,children:[(0,o.jsxs)(`p`,{children:[(0,o.jsx)(`strong`,{children:`On iPhone and iPad, add localdost to your Home Screen first.`}),` iOS only sends web push to Home Screen apps (iOS 16.4 or later).`]}),(0,o.jsxs)(`ol`,{className:`push__steps`,children:[(0,o.jsx)(`li`,{children:`Tap Share in Safari.`}),(0,o.jsx)(`li`,{children:`Choose Add to Home Screen.`}),(0,o.jsx)(`li`,{children:`Open localdost from the Home Screen and come back here.`})]})]});case`unsupported`:return(0,o.jsx)(`p`,{className:`push__text`,children:`This browser does not support web push. Try Chrome, Edge, Firefox, or Safari 16.4 or later.`})}}export{s as t};
|
|
2
|
+
//# sourceMappingURL=PushSection-CmqHlE_2.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{E as e,F as t,G as n,H as r,N as i,R as a,Tn as o,mn as s,pn as c,v as l}from"./ui-DcmhYyYp.js";import{r as u}from"./router-W6nZsQ33.js";import{i as d}from"./store-IqrqHuFR.js";import{a as f,c as p,i as m,l as h,n as g,o as _,s as v,t as y,u as b}from"./releaseNotesModel-A1Rtv3cV.js";var x=s();function S({n:e}){return(0,x.jsx)(l,{kind:m[e.testStatus],label:f[e.testStatus],collapse:`never`,className:`rn-tests`})}function C({n:e}){return e.breaking?(0,x.jsx)(`span`,{className:`rn-breaking`,children:`Breaking`}):(0,x.jsx)(`span`,{className:`rn-none`,children:`-`})}function w({n:t,showDot:n}){return(0,x.jsxs)(`span`,{className:`rn-source`,children:[(0,x.jsx)(e,{source:`github-pr`,refKey:`#${t.pr.number}`,href:t.pr.url,status:t.pr.title||void 0}),n&&(0,x.jsx)(`span`,{className:`rn-source__dot`,children:t.dot.name}),t.alsoNames.length>0&&(0,x.jsxs)(`span`,{className:`rn-source__also`,children:[(0,x.jsx)(`span`,{className:`rn-source__label`,children:`Other issues`}),t.alsoNames.map(t=>(0,x.jsx)(e,{source:_(t.tracker),refKey:h(t.key),href:t.url??void 0},t.ref))]})]})}function T({issue:t}){return t.ref?(0,x.jsxs)(`span`,{className:`rn-issue__head`,children:[(0,x.jsx)(e,{source:_(t.tracker),refKey:h(t.key),href:t.url??void 0}),t.title&&(0,x.jsx)(`span`,{className:`rn-issue__title`,children:t.title})]}):(0,x.jsx)(`span`,{className:`rn-issue__none`,children:g})}function E({list:e,showDot:t}){return(0,x.jsx)(`div`,{className:`rn-table`,children:(0,x.jsxs)(`table`,{children:[(0,x.jsx)(`caption`,{className:`sr-only`,children:`Release notes by milestone and issue, with who each is for and how it was tested`}),(0,x.jsx)(`thead`,{children:(0,x.jsxs)(`tr`,{children:[(0,x.jsx)(`th`,{scope:`col`,className:`rn-col-issue`,children:`Issue`}),(0,x.jsx)(`th`,{scope:`col`,children:`Note`}),(0,x.jsx)(`th`,{scope:`col`,className:`rn-col-flag`,children:`Breaking`}),(0,x.jsx)(`th`,{scope:`col`,className:`rn-col-for`,children:`For`}),(0,x.jsx)(`th`,{scope:`col`,className:`rn-col-tests`,children:`Tests`})]})}),e.milestones.map((n,r)=>(0,x.jsxs)(`tbody`,{children:[(0,x.jsx)(`tr`,{className:`rn-table__milestone`,children:(0,x.jsxs)(`th`,{scope:`colgroup`,colSpan:5,children:[(0,x.jsx)(`span`,{className:`rn-milestone__name`,children:n.milestone??`No milestone`}),(0,x.jsx)(`span`,{className:`rn-milestone__count`,children:p(v(n.issues))})]})}),n.issues.flatMap((i,a)=>{let o=r===e.milestones.length-1&&a===n.issues.length-1;return i.notes.map((e,n)=>(0,x.jsxs)(`tr`,{className:n===0?`rn-table__first`:void 0,children:[n===0&&(0,x.jsx)(`th`,{scope:`rowgroup`,rowSpan:i.notes.length,className:`rn-table__issue${o?` rn-table__issue--end`:``}`,children:(0,x.jsx)(T,{issue:i})}),(0,x.jsxs)(`td`,{className:`rn-table__note`,children:[(0,x.jsx)(`p`,{className:`rn-note`,children:e.note}),(0,x.jsx)(w,{n:e,showDot:t})]}),(0,x.jsx)(`td`,{className:`rn-table__flag`,children:(0,x.jsx)(C,{n:e})}),(0,x.jsx)(`td`,{className:`rn-table__for`,children:y[e.audience]}),(0,x.jsx)(`td`,{className:`rn-table__tests`,children:(0,x.jsx)(S,{n:e})})]},`${i.ref??``}|${e.runId}`))})]},n.milestone??`none`))]})})}function D({list:e,showDot:t}){return(0,x.jsx)(`div`,{className:`rn-list`,children:e.milestones.map(e=>(0,x.jsxs)(`section`,{"aria-label":e.milestone??`No milestone`,children:[(0,x.jsxs)(`h2`,{className:`rn-milestone`,children:[(0,x.jsx)(`span`,{className:`rn-milestone__name`,children:e.milestone??`No milestone`}),(0,x.jsx)(`span`,{className:`rn-milestone__count`,children:p(v(e.issues))})]}),(0,x.jsx)(`ul`,{className:`rn-issues`,children:e.issues.map(e=>(0,x.jsxs)(`li`,{className:`rn-issue`,children:[(0,x.jsx)(`div`,{className:`rn-issue__top`,children:(0,x.jsx)(T,{issue:e})}),(0,x.jsx)(`ul`,{className:`rn-notes`,children:e.notes.map(e=>(0,x.jsxs)(`li`,{className:`rn-notes__item`,children:[(0,x.jsx)(`p`,{className:`rn-note`,children:e.note}),(0,x.jsxs)(`p`,{className:`rn-meta`,children:[e.breaking&&(0,x.jsx)(`span`,{className:`rn-breaking`,children:`Breaking`}),(0,x.jsxs)(`span`,{className:`rn-for`,children:[`For `,y[e.audience].toLowerCase()]}),(0,x.jsx)(S,{n:e})]}),(0,x.jsx)(w,{n:e,showDot:t})]},e.runId))})]},e.ref??`none`))})]},e.milestone??`none`))})}function O({list:e,dotId:r,milestone:a}){let o=e=>u({name:`releaseNotes`,...e},{replace:!0}),s=!!r||!!a,l=!e.filter.dot&&new Set(e.milestones.flatMap(e=>e.issues.flatMap(e=>e.notes.map(e=>e.dot.id)))).size>1;return(0,x.jsxs)(`div`,{className:`page rn qd-touch`,children:[(0,x.jsx)(`header`,{className:`page__header`,children:(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`h1`,{className:`page__title`,children:`Release notes`}),(0,x.jsx)(`p`,{className:`page__subtitle`,children:`What changed in each merged pull request, by milestone and issue.`})]})}),(0,x.jsxs)(`div`,{className:`rn-toolbar`,role:`search`,children:[(0,x.jsx)(i,{label:`Dot`,hideLabel:!0,className:`rn-filter`,children:(0,x.jsxs)(t,{value:r??``,onChange:e=>o({dotId:e.target.value||void 0,milestone:a}),children:[(0,x.jsx)(`option`,{value:``,children:`All dots`}),e.dots.map(e=>(0,x.jsx)(`option`,{value:e.id,children:e.name},e.id))]})}),(0,x.jsx)(i,{label:`Milestone`,hideLabel:!0,className:`rn-filter`,children:(0,x.jsxs)(t,{value:a??``,onChange:e=>o({dotId:r,milestone:e.target.value||void 0}),children:[(0,x.jsx)(`option`,{value:``,children:`All milestones`}),[...new Set([...e.allMilestones,...a?[a]:[]])].map(e=>(0,x.jsx)(`option`,{value:e,children:e},e))]})})]}),(0,x.jsx)(`p`,{className:`rn-summary`,role:`status`,children:b(e.counts)}),e.cut&&(0,x.jsx)(`p`,{className:`rn-cut`,role:`status`,children:`Only the newest checks of each dot are read, so older merges may be missing.`}),e.milestones.length===0?s?(0,x.jsx)(n,{kind:`filtered`,title:`No release notes for these filters`,body:`Pick another dot or milestone.`,action:(0,x.jsx)(c,{onClick:()=>o({}),children:`Clear filters`})}):(0,x.jsx)(n,{kind:`first-run`,title:`No release notes yet`,body:`A note shows up here after a dot reviews a merged pull request that changes something people see.`}):(0,x.jsxs)(`div`,{className:`rn-body`,children:[(0,x.jsx)(E,{list:e,showDot:l}),(0,x.jsx)(D,{list:e,showDot:l})]})]})}var k=(e,t)=>`release-notes:${e??``}:${t??``}`;function A({dotId:e,milestone:t}){let n=d(k(e,t),n=>o.releaseNotes({dot:e,milestone:t},n),{refreshOn:[`run`],throttleMs:5e3});return n.loading?(0,x.jsx)(a,{label:`Loading release notes`}):n.data?(0,x.jsxs)(x.Fragment,{children:[n.error!=null&&(0,x.jsx)(r,{compact:!0,title:`Could not refresh the release notes. Showing the last list.`,error:n.error,onRetry:()=>void n.reload(),retrying:n.refreshing}),(0,x.jsx)(O,{list:n.data,dotId:e,milestone:t})]}):(0,x.jsx)(r,{title:`Could not load the release notes`,error:n.error,onRetry:()=>void n.reload(),retrying:n.refreshing})}export{A as default,k as releaseNotesKey};
|
|
2
|
+
//# sourceMappingURL=ReleaseNotes-B6VqFewP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.rn-toolbar{align-items:center;gap:var(--space-2);margin-bottom:var(--space-3);flex-wrap:wrap;display:flex}.rn-filter{flex:0 220px;min-width:0}@media (max-width:639px){.rn-toolbar{grid-template-columns:minmax(0,1fr) minmax(0,1fr);display:grid}.rn-filter .select{padding-left:var(--space-2);padding-right:28px}}.rn-summary{margin:0 0 var(--space-3);color:var(--text-3);font-size:var(--text-sm)}.rn-body{container:rn/inline-size}.rn-list{display:none}@container rn (width<=639px){.rn-table{display:none}.rn-list{display:block}}.rn-note{margin:0 0 var(--space-1);color:var(--text);font-size:var(--text-md);line-height:var(--leading);overflow-wrap:anywhere}.rn-breaking{min-height:22px;padding:0 var(--space-2);border-radius:var(--radius-full);background:var(--attention-bg);color:var(--attention-fg);font-size:var(--text-xs);font-weight:var(--weight-semibold);white-space:nowrap;align-items:center;display:inline-flex}.rn-none{color:var(--text-3)}.rn-tests{white-space:nowrap}.rn-source{align-items:center;gap:var(--space-1) var(--space-2);color:var(--text-3);font-size:var(--text-xs);flex-wrap:wrap;display:flex}.rn-source__also{align-items:center;gap:var(--space-1) var(--space-2);flex-wrap:wrap;display:inline-flex}.rn-source__label{white-space:nowrap}.rn-cut{margin:0 0 var(--space-3);color:var(--attention-fg);font-size:var(--text-sm)}.rn-issue__head{flex-direction:column;align-items:flex-start;gap:2px;min-width:0;display:flex}.rn-issue__title{min-width:0;font-weight:var(--weight-medium);overflow-wrap:anywhere}.rn-issue__none{color:var(--text-3)}.rn-milestone__name{font-weight:var(--weight-semibold)}.rn-milestone__count{color:var(--text-3);font-size:var(--text-xs);font-weight:var(--weight-regular);white-space:nowrap}.rn-table{border:var(--hairline);border-radius:var(--radius-md);background:var(--surface);overflow:hidden}.rn-table table{table-layout:fixed;border-collapse:collapse;width:100%;font-size:var(--text-sm)}.rn-table th,.rn-table td{padding:var(--space-3);border-bottom:var(--hairline);vertical-align:top;text-align:left}.rn-table thead th{padding-top:var(--space-2);padding-bottom:var(--space-2);background:var(--surface-2);color:var(--text-2);font-size:var(--text-xs);font-weight:var(--weight-semibold);white-space:nowrap}.rn-table .rn-col-issue{width:24%}.rn-table .rn-col-flag{width:96px}.rn-table .rn-col-for{width:104px}.rn-table .rn-col-tests{width:128px}.rn-table__milestone th{background:var(--surface-2);font-size:var(--text-md);display:table-cell}.rn-table__milestone .rn-milestone__count{margin-left:var(--space-2)}.rn-table__issue{font-weight:var(--weight-regular)}.rn-table tbody:last-child tr:last-child>*,.rn-table .rn-table__issue--end{border-bottom:0}.rn-table td{line-height:21px}.rn-table__for{color:var(--text-2)}.rn-milestone{justify-content:space-between;align-items:baseline;gap:var(--space-2);margin:var(--space-4) 0 var(--space-2);font-size:var(--text-md);display:flex}.rn-list section:first-child .rn-milestone{margin-top:0}.rn-issues,.rn-notes{margin:0;padding:0;list-style:none}.rn-issues{border:var(--hairline);border-radius:var(--radius-md);background:var(--surface);overflow:hidden}.rn-issue{padding:var(--space-3);border-bottom:var(--hairline)}.rn-issue:last-child{border-bottom:0}.rn-issue__top{margin-bottom:var(--space-2)}.rn-notes__item{padding:var(--space-2) 0;border-top:var(--hairline)}.rn-notes__item:first-child{border-top:0;padding-top:0}.rn-notes__item:last-child{padding-bottom:0}.rn-meta{align-items:center;gap:var(--space-1) var(--space-3);margin:0 0 var(--space-1);color:var(--text-2);font-size:var(--text-sm);flex-wrap:wrap;display:flex}
|