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
package/docs/PARITY.md
ADDED
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: localdost parity with CopilotKit OpenDots
|
|
3
|
+
date: 2026-10-07
|
|
4
|
+
compared: CopilotKit/OpenDots at main, 53 commits, last push 2026-10-06 (https://github.com/CopilotKit/OpenDots)
|
|
5
|
+
localdost: duonghaijoe/localdost at main, local checkout ~/vault/08-code/localdost
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# localdost parity with OpenDots
|
|
9
|
+
|
|
10
|
+
localdost already beats OpenDots on the thing OpenDots says it lacks: event triggers. OpenDots lists "Add event triggers and a persistent responsibility lifecycle" under further work (https://github.com/CopilotKit/OpenDots#extending-the-template), while localdost runs on merges, PRs, CI failures, new tickets, and outages today. **The gap is everything a stranger sees in the first five minutes: a typed component client, a live view of what the dot is doing, setup states, Docker, CI, docs, demo GIFs, and a landing page.** OpenDots reached about 4,000 stars and 555 forks in eight days with a template whose agent logic is thinner than ours, so the launch surface carried most of the result.
|
|
11
|
+
|
|
12
|
+
In short: OpenDots is a kit for a team of AI helpers that chat, call, and post in Slack. localdost is the same idea pointed at one job, keeping a product from breaking. Think of OpenDots as a furnished office with empty desks, and localdost as one desk with a QA engineer already sitting at it but no sign on the door.
|
|
13
|
+
|
|
14
|
+
## Feature matrix
|
|
15
|
+
|
|
16
|
+
Status values: **have** (works today), **partial** (exists in a reduced form), **missing**. OpenDots sources are files in https://github.com/CopilotKit/OpenDots unless noted.
|
|
17
|
+
|
|
18
|
+
### UI surfaces
|
|
19
|
+
|
|
20
|
+
| OpenDots capability | Source | localdost translation | Status | Build task |
|
|
21
|
+
|---|---|---|---|---|
|
|
22
|
+
| App shell with Dots, Spaces, and recent-chat navigation, collapsible sidebar on desktop, drawer on mobile | `src/client/App.tsx`, `SpaceNav.tsx`, `ThreadList.tsx` | Dots list, Feed, Inbox, Chat, Settings, plus a Reports workspace; bottom tabs on phone, sidebar at 1024 px and up | partial (5 bottom tabs, phone-only layout in `web/app.js`) | Rebuild as React shell with responsive sidebar and tab bar |
|
|
23
|
+
| Continuous chat with avatar and status header, streamed text, tool calls rendered inline | `Chat.tsx`, `ChatTranscript.tsx` | Chat with a dot; tool calls (`rerun_tests`, `get_run`, `probe_status`) render as cards with results | partial (SSE stream, tool names only, no inline cards) | Tool-call card renderer keyed by tool name |
|
|
24
|
+
| Result side pane next to chat | `ResultPane.tsx` | Run detail pane: verdict, failing specs, diff summary, evidence, gate result | partial (run detail is a full-screen view) | Split view on desktop, sheet on phone |
|
|
25
|
+
| Task rows with pause, retry, and "Retry after review" for interrupted runs | `TaskPresentation.tsx`, `TaskActions.tsx`, README "Interrupted" | Run rows with Rerun, Pause dot, Retry after review for runs whose worker died mid-test | partial (rerun flow exists in `src/flows/rerun.ts`; no interrupted state or lease) | Add run leases, `interrupted` status, Retry after review button |
|
|
26
|
+
| Workspace dialogs for create, rename, delete | `WorkspaceDialog.tsx` | Create dot (Watch) dialog: repo, tracker, URLs, probes, rules | missing (empty state says "add a Watch through the API") | Create and edit Watch form in the client; reuse `POST /api/dots` |
|
|
27
|
+
| Settings and setup card with readiness per service, Slack online state, setup guide link | `App.tsx` lines 206 to 753 (`workspace.setup.missing`) | Setup panel: model backend, GitHub mode (App, PAT, demo), Jira, Linear, push, tunnel URL, each with ready, missing, or demo | partial (boot log names the backend; client shows no readiness) | `GET /api/setup` returning per-service state; Setup screen and banner |
|
|
28
|
+
| Theme preference system, light, dark | `src/client/theme.ts`, `public/theme.js` | Same three-way switch | missing (light only, no `prefers-color-scheme` rule in `web/styles.css`) | Token-based CSS with a dark set; theme switch in Settings |
|
|
29
|
+
| Dark colors derived at build time from light styles with a contrast floor | `src/build/dark-theme.ts` (Vite plugin, `TEXT_FLOOR = 0.72`) | Hand-written dark token set; simpler than a build plugin at our size | missing | Write dark tokens for the True accent `#6059E4`; check WCAG AA contrast |
|
|
30
|
+
| Mascot: four plush dot characters, colour picked by a stable hash of the Dot id, state class (idle, working) | `src/client/Mascot.tsx`, `public/dots/{blue,mint,orange,purple}.png` | QA mascot per dot with states ok, running, attention, outage; colour stable per dot | partial (status dot only, `web/icon.svg`) | Commission or generate four dot characters with QA props; `Mascot` component with four states |
|
|
31
|
+
| Narrow-screen and keyboard access checked before PRs | `CONTRIBUTING.md` | Already a done criterion at 390x844 | have (e2e `layout.spec.ts` on iPhone 13) | Keep; add keyboard-only spec |
|
|
32
|
+
|
|
33
|
+
### Agent features
|
|
34
|
+
|
|
35
|
+
| OpenDots capability | Source | localdost translation | Status | Build task |
|
|
36
|
+
|---|---|---|---|---|
|
|
37
|
+
| Specialist Dots with name, role, instructions, permitted tools | README "Specialist Dots" | Dots with a QA role: release guard (post-merge), ticket reviewer, prod watcher, flake hunter; each with its own rule set | partial (one Watch shape covers all roles; no instructions field) | Add `role` and `instructions` to Watch; role presets in the create dialog |
|
|
38
|
+
| One agent class shared by web chat, Slack, schedules, and voice delegation, 90 s turn limit | `src/server/dot-agent.ts` (`TURN_TIME_LIMIT_MS = 90_000`) | One dot agent shared by chat, flows, Slack, and voice | partial (chat in `src/agent/chat.ts`, flows separate) | Extract a shared `DotAgent` that both chat and flows call |
|
|
39
|
+
| Background work: scheduled turns in their original conversation, pause, retry, leases | `src/server/store.ts` (`tasks`, `runs`, `lease`, `leaseUntil`) | Job queue with dedupe, flows, daily digest | have (stronger: event triggers plus schedule) | Add lease expiry to `src/queue.ts` so a crashed job becomes `interrupted` |
|
|
40
|
+
| Event triggers and responsibility lifecycle | listed as missing in OpenDots README | Webhooks and poll mode for GitHub, Jira, Linear; probes; Statuspage | have | Lead the landing page with this |
|
|
41
|
+
| Memory: user-managed preferences that permitted Dots use | README Features table, `memories` table | Per-dot memory, flaky specs saved automatically | have | None |
|
|
42
|
+
| Automatic Learning: per-Dot containers, conversation evidence routed to published skills | `src/server/learning.ts`, `docs/SETUP.md#automatic-learning` | Learned QA skills: recurring failure signatures, flaky spec list, known-bad selectors, repo test conventions, promoted after owner review | partial (memory only, no review-and-publish step) | Learning candidates list in Settings with Approve to publish; inject published items into prompts |
|
|
43
|
+
| Public-web research through Parallel Search MCP, up to five sources, provider switch | `src/server/parallel.ts`, README "Public-web research" | Research for a failing run: search the vendor status page, library changelog, and known issues for the error signature | missing | Optional `research_failure` tool behind `WEB_SEARCH_PROVIDER`; default off |
|
|
44
|
+
| Model choice: any OpenAI-compatible provider via TanStack AI | `package.json`, README | Anthropic API, local Claude CLI, mock | partial (no OpenAI-compatible path) | Add `openai-compatible` backend to `src/agent/llm.ts` so non-Claude users can run it |
|
|
45
|
+
|
|
46
|
+
### Human in the loop
|
|
47
|
+
|
|
48
|
+
| OpenDots capability | Source | localdost translation | Status | Build task |
|
|
49
|
+
|---|---|---|---|---|
|
|
50
|
+
| Review before saving: chat pauses on an **Approve & save** or **Decline** card; retries with the same draft recover the saved page | `PageReviewCard.tsx`, `src/shared/page-review.ts` | Review before posting: PR comment, check run, Jira or Linear comment drafts wait for Approve, Edit, Reject | have (Inbox with four-level rule gate in `src/agent/rules.ts`) | Also render the approval card inline in Chat and in the run pane, deduped by approval id |
|
|
51
|
+
| Connection actions: non-read-only MCP tools pause on **Approve & run**; stored request, one hour expiry, runs once | `ConnectionActionCard.tsx`, `docs/CONNECTIONS.md` | Same for any outward action triggered from chat | partial (no expiry, no run-once guard on approvals) | Add `expiresAt` and single-execution check on `POST /api/approvals/:id` |
|
|
52
|
+
|
|
53
|
+
### Connections and MCP
|
|
54
|
+
|
|
55
|
+
| OpenDots capability | Source | localdost translation | Status | Build task |
|
|
56
|
+
|---|---|---|---|---|
|
|
57
|
+
| Per-Dot MCP servers over Streamable HTTP with bearer token, tool list refresh, per-tool on/off and Ask first | `src/server/connections.ts` (`MAX_TOOLS = 100`), `ConnectionsSection.tsx`, `docs/CONNECTIONS.md` | Per-dot MCP connections for QA tools: Katalon True Platform MCP, TestRail, Sentry, Datadog, BrowserStack | missing (GitHub, Jira, Linear are built-in clients) | Port the connection service and section; read-only tools auto-run, others go through `gate` |
|
|
58
|
+
| Tokens kept server-side in SQLite, never sent to the browser | `docs/CONNECTIONS.md` security notes | Same | have for env credentials; n/a for MCP | Apply the same rule to MCP tokens |
|
|
59
|
+
|
|
60
|
+
### Computers
|
|
61
|
+
|
|
62
|
+
| OpenDots capability | Source | localdost translation | Status | Build task |
|
|
63
|
+
|---|---|---|---|---|
|
|
64
|
+
| Per-Dot computer via OpenBot supervisor: persistent browser profile and workspace volume | `docs/COMPUTERS.md`, `compose.computers.yml` | Per-dot test sandbox: a container with the repo checkout, Playwright browsers, and a persistent auth state for the app under test | partial (`src/runner/index.ts` docker mode: pinned image, read-only mount, secrets denylist; one-shot, no persistence) | Long-lived sandbox per dot with named volumes for `node_modules` and `storageState` |
|
|
65
|
+
| Computer panel: live browser, human takeover, files, terminal, activity log | `src/client/ComputerPanel.tsx` (694 lines), `ComputerToolCard.tsx` | Live browser view of the test run, step list, take over to fix a login or captcha, terminal output of `playwright test`, artifact files (trace, screenshots, video) | missing | Stream screenshots per step (CDP screencast or Playwright `--trace on` frames); TestRun panel with Steps, Browser, Terminal, Artifacts tabs |
|
|
66
|
+
| Permissions per Dot (browser, files, shell), start disabled, revoke cancels the active request | `docs/COMPUTERS.md` | Per-dot permissions: run tests, open browser against prod, shell in sandbox | partial (rules gate covers outward actions, not sandbox capabilities) | Add capability flags to Watch; enforce in runner |
|
|
67
|
+
| Activity record without typed values, file contents, or full commands; last 1,000 per Dot | `docs/COMPUTERS.md` | Run step audit | partial (runs table stores steps) | Cap and redact step records |
|
|
68
|
+
| Separate read-only browser service for public pages | `src/browser/*`, `Dockerfile` target `browser` | Probe browser for synthetic checks on prod (load page, assert selector) | partial (HTTP probes only in `src/monitor/probes.ts`) | Browser probe type: open URL, wait for selector, screenshot on fail |
|
|
69
|
+
|
|
70
|
+
### Voice calls
|
|
71
|
+
|
|
72
|
+
| OpenDots capability | Source | localdost translation | Status | Build task |
|
|
73
|
+
|---|---|---|---|---|
|
|
74
|
+
| WebRTC realtime call with timer, separate captions, mic and speaker mute, minimize, hang-up, receipt in timeline | `CallView.tsx`, `useVoice.ts`, `src/server/voice.ts` | "Call your QA dot" from a push notification: ask what broke and hear the verdict hands-free | partial (push-to-talk via `webkitSpeechRecognition`, read-aloud via `speechSynthesis`) | Phase 1: CallView UI over the existing speech APIs with captions and receipt. Phase 2: realtime provider behind `VOICE_API_KEY` |
|
|
75
|
+
| Spoken compute delegation: call continues while a separate agent runs longer work | `src/server/voice.ts` jobs map | "Rerun checkout specs" by voice while the call continues; result lands as a receipt | missing | Delegate voice intents to the queue; post a receipt event |
|
|
76
|
+
|
|
77
|
+
### Slack
|
|
78
|
+
|
|
79
|
+
| OpenDots capability | Source | localdost translation | Status | Build task |
|
|
80
|
+
|---|---|---|---|---|
|
|
81
|
+
| Mention a Dot in Slack through Channels SDK, thread continues, workspace and user allowlist | `src/server/slack-channel.ts`, `docs/SETUP.md#slack` | `@localdost` in a release or incident channel: "is prod up?", "what did the last merge break?"; dot posts outage and digest to a channel | missing (ntfy and web push only) | Slack app with Events API, allowlist by team and user id, reuse chat tools; approvals stay in the web app |
|
|
82
|
+
|
|
83
|
+
### Spaces and pages
|
|
84
|
+
|
|
85
|
+
| OpenDots capability | Source | localdost translation | Status | Build task |
|
|
86
|
+
|---|---|---|---|---|
|
|
87
|
+
| Spaces with searchable library, grid and list, nested subpages | `SpaceLibrary.tsx`, `SpaceWorkspace.tsx`, `src/server/pages.ts` | Reports workspace: test plans, release readiness reports, incident write-ups, per dot or per release | missing | `pages` table and routes; Library view with search |
|
|
88
|
+
| Visual editor (Tiptap) with slash commands, tables, task lists, autosave, revision checks, Markdown source mode | `src/client/editor/*`, `use-page-autosave.ts` | Editable test plan and report pages; tables for coverage, task lists for open risks | missing | Tiptap editor with Markdown round trip; revision check on save |
|
|
89
|
+
| Page conversations: separate chat per page with the page as context | `PageConversation.tsx`, `page-context.ts` | Ask the dot about a report: "which risks are still open?" | missing | Page-scoped chat that passes page text as context |
|
|
90
|
+
| Save a conversation as a page | README "Spaces" | Save a run verdict or a digest as a report page | missing | "Save as report" action on run detail and digest |
|
|
91
|
+
|
|
92
|
+
### Telemetry
|
|
93
|
+
|
|
94
|
+
| OpenDots capability | Source | localdost translation | Status | Build task |
|
|
95
|
+
|---|---|---|---|---|
|
|
96
|
+
| Setup funnel events (`setup_step_viewed`, `setup_failed`, `setup_activated`, `setup_abandoned`) with closed properties, SQLite queue, opt-out via `DO_NOT_TRACK` | `docs/SETUP-TELEMETRY.md`, `src/server/setup-telemetry.ts` | Same funnel with QA activation = first real (non-demo) run with a verdict | missing | Opt-out telemetry with a bounded event set; document every property |
|
|
97
|
+
| Signup and usage tracking with HogQL reporting queries | `docs/TELEMETRY.md`, `docs/telemetry/*.hogql.sql` | Weekly installs, activated installs, runs per install | missing | PostHog project and four saved queries |
|
|
98
|
+
|
|
99
|
+
### Brand, packaging, and project hygiene
|
|
100
|
+
|
|
101
|
+
| OpenDots capability | Source | localdost translation | Status | Build task |
|
|
102
|
+
|---|---|---|---|---|
|
|
103
|
+
| Multi-stage Dockerfile: `app` and `browser` targets, non-root user | `Dockerfile` | `app` target plus a `runner` target with Playwright browsers | missing | Dockerfile with two targets |
|
|
104
|
+
| Compose with `no-new-privileges`, `cap_drop: ALL`, internal network for the browser, required `OWNER_TOKEN` | `compose.yml`, `compose.computers*.yml` | `compose.yml` requiring `LOCALDOST_TOKEN`, sandbox network internal | missing | compose files mirroring the hardening |
|
|
105
|
+
| CI: format check, lint, typecheck, test, build on Node 24 | `.github/workflows/ci.yml` | Same plus `test:e2e` on the mobile and desktop projects | missing (no `.github/`) | Add workflow; upload Playwright report as artifact |
|
|
106
|
+
| Tests: 50 Vitest files covering permissions, cancellation, telemetry, voice, Slack wiring | `tests/` | `node:test` unit suite plus Playwright e2e | have (5 unit files, 7 e2e specs) | Add tests per new surface; component tests after the React move |
|
|
107
|
+
| Prettier, ESLint, Renovate | `.prettierrc.json`, `eslint.config.js`, `renovate.json` | Same | missing | Add configs and scripts |
|
|
108
|
+
| Docs set: SETUP, COMPUTERS, CONNECTIONS, TELEMETRY, SETUP-TELEMETRY, demos README | `docs/` | SETUP, GITHUB, TRACKERS (Jira and Linear), SANDBOX, CONNECTIONS, TELEMETRY, demos README | partial (all in one 180-line README) | Split README into `docs/`; keep README as pitch plus quick start |
|
|
109
|
+
| CONTRIBUTING and SECURITY with trust boundary | `CONTRIBUTING.md`, `SECURITY.md` | Same; boundary covers webhooks, tunnels, tokens, sandbox | missing | Write both |
|
|
110
|
+
| LICENSE MIT | `LICENSE` | MIT | missing (no LICENSE file; `package.json` says `private: true`) | Add LICENSE; decide licence before going public |
|
|
111
|
+
| Demo GIFs and MP4s with posters, recording notes that state what was live and what was trimmed | `docs/demos/README.md` (four flows, 13 to 34 s, 1.25x) | Merge breaks checkout, ticket review, outage at 2 a.m., phone approval, live test run view | missing | Record five clips from the real demo; write recording notes that say what was live and what was trimmed |
|
|
112
|
+
| README hero video, badges (CI, MIT, alpha, Trendshift), "Talk to us" CTA | `README.md` lines 1 to 35 | Same layout | missing | Rewrite README top after the GIFs exist |
|
|
113
|
+
| Clear setup state when config is missing; fixtures visibly separate from live | README Architecture | Demo mode with outbox, mock LLM | have (stronger: whole product runs with no keys) | Show a "Demo mode" badge in the client header |
|
|
114
|
+
| Fully offline first run | needs CopilotKit Intelligence for any chat (README "Get started") | `npm run demo` works with zero accounts | have | Lead with this in README and landing |
|
|
115
|
+
|
|
116
|
+
## Client stack decision
|
|
117
|
+
|
|
118
|
+
**Move the client to React 19 + Vite + TypeScript, and keep it a PWA served by the existing Fastify server. Do not adopt CopilotKit Intelligence.**
|
|
119
|
+
|
|
120
|
+
Reasons for the move:
|
|
121
|
+
|
|
122
|
+
- `web/app.js` is already 1,356 lines of string-built HTML for five screens. The P0 list adds a live test-run panel, inline tool cards, approval cards in chat, a setup panel, a Watch form, and a theme switch. Each is a stateful component; string templates make that code hard to change without regressions.
|
|
123
|
+
- `src/types.ts` is the fixed contract. With TypeScript in the client, `Watch`, `Run`, `Verdict`, and `LiveEvent` are imported instead of guessed, and a server shape change fails the build.
|
|
124
|
+
- Component tests become possible. OpenDots tests cards with `react-test-renderer` (`tests/page-review-card.test.tsx`, `tests/connection-card.test.tsx`); we can do the same for verdict and approval cards with Vitest.
|
|
125
|
+
- Contributors who arrive from OpenDots expect this stack, and a fork that borrows `ComputerPanel` or `CallView` ideas ports with less translation.
|
|
126
|
+
|
|
127
|
+
Costs and how to contain them: we lose "no build step". Vite outputs to `dist/web`, Fastify serves it, and `npm run demo` runs `vite build` first, so the one-command demo survives. The service worker moves to `vite-plugin-pwa` or stays hand-written in `public/sw.js`.
|
|
128
|
+
|
|
129
|
+
Why not CopilotKit Intelligence: OpenDots needs a hosted or licensed Intelligence deployment for any conversation (https://github.com/CopilotKit/OpenDots#get-started). That breaks our strongest property, a fully offline demo. We keep our own SSE stream. AG-UI event shapes are worth matching in `/api/chat` later so an AG-UI client could attach, but this is P1 at most.
|
|
130
|
+
|
|
131
|
+
### Screens and components
|
|
132
|
+
|
|
133
|
+
| localdost screen or component | Modeled on (OpenDots) | Purpose |
|
|
134
|
+
|---|---|---|
|
|
135
|
+
| `AppShell` (sidebar desktop, tab bar phone) | `App.tsx`, `SpaceNav.tsx` | Navigation between Dots, Feed, Inbox, Reports, Settings |
|
|
136
|
+
| `DotList`, `DotRow` | `SpaceNav.tsx` Dots section | Status, latest finding, pending count |
|
|
137
|
+
| `Mascot` | `Mascot.tsx` | Stable per-dot character with ok, running, attention, outage states |
|
|
138
|
+
| `Feed`, `RunRow` | `TaskPresentation.tsx`, `ThreadList.tsx` | Activity across dots |
|
|
139
|
+
| `RunDetail` pane | `ResultPane.tsx` | Verdict, failing specs, diff, evidence, gate result |
|
|
140
|
+
| `RunActions` | `TaskActions.tsx` | Rerun, Pause dot, Retry after review |
|
|
141
|
+
| `TestRunPanel` with Steps, Browser, Terminal, Artifacts tabs | `ComputerPanel.tsx` | Live browser view of the test run, takeover, trace and screenshot files |
|
|
142
|
+
| `TestRunCard` (inline in chat) | `ComputerToolCard.tsx` | Compact live run card when chat triggers `rerun_tests` |
|
|
143
|
+
| `Chat`, `ChatTranscript`, `Composer` | `Chat.tsx`, `ChatTranscript.tsx`, `chat-composer.ts` | Streamed chat with tool cards and quick chips |
|
|
144
|
+
| `ApprovalCard` (Inbox and inline) | `PageReviewCard.tsx`, `ConnectionActionCard.tsx` | Exact draft with Approve, Edit, Reject |
|
|
145
|
+
| `CallView` | `CallView.tsx`, `useVoice.ts` | Timer, captions, mute, minimize, receipt |
|
|
146
|
+
| `ReportsLibrary`, `ReportPage`, `ReportEditor`, `ReportChat` | `SpaceLibrary.tsx`, `SpaceWorkspace.tsx`, `editor/RichEditor.tsx`, `PageConversation.tsx` | Test plans, readiness reports, incident write-ups |
|
|
147
|
+
| `WatchDialog` | `WorkspaceDialog.tsx` | Create and edit a dot: repo, tracker, URLs, probes, role, rules |
|
|
148
|
+
| `ConnectionsSection` | `ConnectionsSection.tsx` | Per-dot MCP servers and tool toggles |
|
|
149
|
+
| `SetupPanel`, `SetupBanner` | setup card in `App.tsx` | Per-service readiness, demo badge, guide links |
|
|
150
|
+
| `ThemeSwitch` | `theme.ts` | System, light, dark |
|
|
151
|
+
| `RulesEditor`, `MemoryList`, `PushToggle`, `SimulatePanel` | Settings in `App.tsx` | Existing Settings content, ported |
|
|
152
|
+
|
|
153
|
+
## Landing page
|
|
154
|
+
|
|
155
|
+
### OpenDots page structure
|
|
156
|
+
|
|
157
|
+
The page at https://www.copilotkit.ai/opendots (fetched 2026-10-07) is dark with glow gradients, card sections, and the four plush dot mascots in the hero. Headline: "Always-on AI coworkers for text, calls and Slack". Subhead says each Dot has its own role, permissions, and computer, that work lands as editable pages, and that you clone, self-host, and customise. Hero CTAs are **View source** (GitHub) and **Talk to us** (`/talk-to-an-engineer`). Sections in order:
|
|
158
|
+
|
|
159
|
+
1. Product screenshot of the dashboard with Spaces, an activity log, and Scout doing competitor research.
|
|
160
|
+
2. Spaces ("Where the work ends up").
|
|
161
|
+
3. Specialist Dots ("Coworkers with one job each"), with Scout and Quill and permission chips.
|
|
162
|
+
4. Dot computers ("Each Dot gets its own computer").
|
|
163
|
+
5. Human in the loop ("Nothing is saved until you say so").
|
|
164
|
+
6. Text, calls and Slack ("One conversation, wherever you are").
|
|
165
|
+
7. Built on AG-UI, with adopter logos: Google, AWS, Microsoft, LangChain, Mastra, Pydantic AI.
|
|
166
|
+
8. Status checklist "What's in the template", each item marked tested live or still needing live checks.
|
|
167
|
+
9. Get started ("Running locally in five commands"), Node 24 note.
|
|
168
|
+
10. FAQ.
|
|
169
|
+
11. Closing CTA "Build your own Dots" with the same two buttons.
|
|
170
|
+
|
|
171
|
+
The site banner also promoted a live session on Oct 22, 10 AM PT, "Open Bot: Build Your Own Open-Source AI Coworker".
|
|
172
|
+
|
|
173
|
+
Two choices are worth copying directly: the status checklist that separates "tested with live services" from "needs live testing", and the repeated two-button CTA. Both build trust with developers who distrust launch pages.
|
|
174
|
+
|
|
175
|
+
### localdost outline
|
|
176
|
+
|
|
177
|
+
Copy angle: a QA teammate that reads every merge and ticket and texts you when checkout breaks. Self-hosted, your own key, runs offline in demo mode.
|
|
178
|
+
|
|
179
|
+
| Section | Content | CTA |
|
|
180
|
+
|---|---|---|
|
|
181
|
+
| Hero | Headline candidate: "Always-on QA agents that watch every merge, ticket, and prod URL". Subhead: each dot owns one part of your product, runs your Playwright tests after a merge, reviews new tickets for gaps, and pings your phone only when something needs you. Visual: phone mockup showing a push "Checkout: merge #142 broke Pay button" next to the desktop run view | **Run the demo** (anchor to quick start), **View source** (GitHub) |
|
|
182
|
+
| Demo strip | 20 s GIF: simulated merge, live browser view of the failing spec, verdict, push on phone | none |
|
|
183
|
+
| Triggers | Five event cards: PR opened, merged, CI failed, ticket created, prod down. Line under it: OpenDots-style agents wait for a schedule; these wake on events | none |
|
|
184
|
+
| Watch a test run | Live browser, steps, terminal, trace files in the dot's own sandbox; take over for a login | none |
|
|
185
|
+
| Ticket review | Before and after of a Jira ticket with the dot's draft comment: acceptance-criteria gaps, test ideas, risky existing tests | none |
|
|
186
|
+
| Ask first | Four rule levels per action, Inbox on the phone with Approve, Edit, Reject; nothing posts to GitHub or Jira without the rule allowing it | none |
|
|
187
|
+
| Phone | PWA install, push, voice: "is prod up?" | **Install on your phone** (docs link) |
|
|
188
|
+
| Status checklist | Verified live vs fixture-only, copied from the OpenDots pattern, with dates | none |
|
|
189
|
+
| Get started | `npm install && npm run demo`, "no accounts needed" | **Run the demo** |
|
|
190
|
+
| FAQ | Which model? (Claude API, Claude CLI, OpenAI-compatible later). Does code leave my machine? Webhooks or polling? How does it differ from Katalon True Platform? | none |
|
|
191
|
+
| Closing | "Give your repo a QA dot" | **View source**, **Star on GitHub** |
|
|
192
|
+
|
|
193
|
+
Visual direction: light theme by default, True Platform accent `#6059E4` per the standing brand rule, the dot mascots in four QA states. Use real captures from the demo app only.
|
|
194
|
+
|
|
195
|
+
## OpenDots launch teardown
|
|
196
|
+
|
|
197
|
+
**The launch was a fast-follow on a big-company announcement.** OpenAI announced Dots at DevDay on 2026-09-29 (https://aiweekly.co/alerts/openai-unveils-dots-always-on-personal-agents-at-devday). CopilotKit's first commit, "docs: introduce OpenDots and its first-release scope", landed at 17:20 UTC the same day (https://github.com/CopilotKit/OpenDots/commits/main). Two other clones were posted to Hacker News within an hour of that: `Anil-matcha/open-dots` at 18:03 UTC and `diggerhq/opendots` as a Show HN at 17:58 UTC, each with 2 to 3 points (https://hn.algolia.com/api/v1/search?query=OpenDots&tags=story). CopilotKit did not win on being first. It won on polish and an existing audience.
|
|
198
|
+
|
|
199
|
+
Timeline, from the commit history and public posts:
|
|
200
|
+
|
|
201
|
+
| Date (2026) | Move | Evidence |
|
|
202
|
+
|---|---|---|
|
|
203
|
+
| Sep 29 | OpenAI Dots announced; repo created 17:13 UTC; 6 commits | GitHub API `created_at`, commit dates |
|
|
204
|
+
| Sep 29 to 30 | Live verification of Intelligence, model, page chat (Sep 29) and voice (Sep 30); demo GIFs recorded with recording notes | https://github.com/CopilotKit/OpenDots/blob/main/docs/demos/README.md |
|
|
205
|
+
| Oct 1 | Blog post "Introducing OpenDots: the Open-Source Alternative to OpenAI Dots" by Anmol Baranwal and Eli Berman; 10 commits that day | https://www.copilotkit.ai/blog/introducing-opendots |
|
|
206
|
+
| Oct 1 to 2 | X post from @CopilotKit (engagement not readable without login); syndication on daily.dev | https://x.com/CopilotKit/status/2105714964023685148, https://daily.dev/posts/pqmykdxnd |
|
|
207
|
+
| Oct 2 | HN submission of the repo: 2 points, 0 comments. HN was not the channel | https://news.ycombinator.com/item?id=49930183 |
|
|
208
|
+
| Oct 2 | AlphaSignal newsroom write-up | https://alphasignal.ai/news/copilotkit-ships-opendots-to-give-ai-agents-web-voice-and-slack-access |
|
|
209
|
+
| Oct 3 | Trendshift #1 TypeScript repo of the day, #4 across all languages; README badge shows #2 TypeScript | https://trendshift.io/repositories/275323 |
|
|
210
|
+
| Week 40 | Trendshift #12 TypeScript weekly | same |
|
|
211
|
+
| Oct 5 to 6 | 35 commits after launch: fixes and polish while attention was high | commit dates |
|
|
212
|
+
| Oct 22 (planned) | Live event "Open Bot: Build Your Own Open-Source AI Coworker", promoted in the site banner | https://www.copilotkit.ai/opendots |
|
|
213
|
+
|
|
214
|
+
Verified numbers on 2026-10-07 from the GitHub API: 4,054 stars, 555 forks, 19 contributors, 117 issues and PRs, 53 commits, no tagged release. Third-party write-ups appeared within days (https://pasqualepillitteri.it/en/news/20412/free-open-source-dots-opendots-alternatives, https://www.ac0.ai/en/field-notes/opendots-self-hosted-ai-coworker-open-source), and at least one public fork rebranded it (https://github.com/softnetics/opendots). I found no Product Hunt listing and no YouTube video for OpenDots itself.
|
|
215
|
+
|
|
216
|
+
What carried it, in order of weight:
|
|
217
|
+
|
|
218
|
+
- **Positioning against a named incumbent.** The blog headline is "the Open-Source Alternative to OpenAI Dots", and its argument is that OpenAI's dots are closed, model-locked, and plan- and region-limited. Every search for "OpenAI Dots" now surfaces the alternative.
|
|
219
|
+
- **Existing distribution.** CopilotKit's GitHub org, X account, Discord, and blog audience drove the stars; HN contributed almost nothing.
|
|
220
|
+
- **Assets before the post.** Five recorded flows with GIF and MP4 versions, poster frames, and a recording note that states what was trimmed and what was live. The README opens with a video.
|
|
221
|
+
- **Stated scope.** Alpha badge, a features table that separates live-verified from fixture-tested, and a "What's in the template" checklist on the landing page.
|
|
222
|
+
- **Funnel to sales.** "Talk to us" sits next to "View source" in the README, the hero, and the closing section, with a `?ref=opendots_readme` tag. Telemetry tracks setup activation (`docs/TELEMETRY.md`). The repo is a lead source for CopilotKit Intelligence.
|
|
223
|
+
- **Ecosystem cross-links.** README links OpenBot, OpenTag, OpenMuse, Channels SDK, and AG-UI, so each sibling repo feeds the others.
|
|
224
|
+
|
|
225
|
+
### Implications for localdost
|
|
226
|
+
|
|
227
|
+
The OpenAI Dots news cycle has passed, so a pure "alternative to OpenAI Dots" angle is late and already owned. The open slot is the vertical: OpenDots explicitly lacks event triggers, and no clone targets QA. Position localdost as "OpenDots for QA" with event triggers as the differentiator, and cite OpenDots in the README the way OpenDots cites OpenBot. Huy's channels are his X and LinkedIn, duonghaijoe.com, and Katalon's audience; HN Show HN is still worth one attempt because a QA-specific tool is a better HN fit than a template. Have the GIFs, the checklist, and the Docker path ready before posting.
|
|
228
|
+
|
|
229
|
+
## Task list
|
|
230
|
+
|
|
231
|
+
Sizes: S under a day, M one to three days, L more than three days.
|
|
232
|
+
|
|
233
|
+
### P0, needed for public launch
|
|
234
|
+
|
|
235
|
+
| Task | Size | Track |
|
|
236
|
+
|---|---|---|
|
|
237
|
+
| Add MIT LICENSE, drop `private: true`, confirm the repo can go public | S | docs |
|
|
238
|
+
| Migrate client to React + Vite + TS; port the five screens; keep PWA, push, SSE, and offline demo | L | client |
|
|
239
|
+
| `GET /api/setup` with per-service readiness (model, GitHub mode, Jira, Linear, push, public URL) | S | server |
|
|
240
|
+
| SetupPanel, SetupBanner, and a Demo mode badge | M | client |
|
|
241
|
+
| WatchDialog to create and edit a dot from the client | M | client |
|
|
242
|
+
| Dark theme tokens and ThemeSwitch (system, light, dark), WCAG AA checked | M | client |
|
|
243
|
+
| Mascot set: four dot characters with ok, running, attention, outage states | M | client |
|
|
244
|
+
| Step screenshots and trace capture in the runner; stream frames over `/api/live` | M | server |
|
|
245
|
+
| TestRunPanel (Steps, Browser, Terminal, Artifacts) and inline TestRunCard in chat | L | client |
|
|
246
|
+
| Inline ApprovalCard in chat and run pane; approval expiry and run-once guard | M | client |
|
|
247
|
+
| Run leases and `interrupted` status with Retry after review | M | server |
|
|
248
|
+
| Dockerfile (`app`, `runner` targets) and hardened `compose.yml` requiring `LOCALDOST_TOKEN` | M | server |
|
|
249
|
+
| CI workflow: format, lint, typecheck, unit, build, e2e with report artifact; Prettier and ESLint configs | S | server |
|
|
250
|
+
| Split README into `docs/` (SETUP, GITHUB, TRACKERS, SANDBOX, TELEMETRY); add CONTRIBUTING and SECURITY | M | docs |
|
|
251
|
+
| Record five demo clips (merge breaks checkout, ticket review, outage, phone approval, live test run) with recording notes | M | docs |
|
|
252
|
+
| README hero: video, badges, two CTAs, live-vs-fixture status table | S | docs |
|
|
253
|
+
| Landing page per the outline above | M | landing |
|
|
254
|
+
| Launch plan: X and LinkedIn thread with GIFs, duonghaijoe.com post, Show HN draft, "OpenDots for QA" framing, date chosen away from big vendor news | S | gtm |
|
|
255
|
+
|
|
256
|
+
### P1, soon after launch
|
|
257
|
+
|
|
258
|
+
| Task | Size | Track |
|
|
259
|
+
|---|---|---|
|
|
260
|
+
| Per-dot MCP connections with tool toggles and Ask first (port of `connections.ts` pattern); first target Katalon True Platform MCP | L | server |
|
|
261
|
+
| ConnectionsSection in dot settings | M | client |
|
|
262
|
+
| Slack app: mentions, threads, team and user allowlist, outage and digest posts | L | server |
|
|
263
|
+
| Reports workspace: `pages` table, library, Tiptap editor with Markdown round trip, revision checks | L | client |
|
|
264
|
+
| "Save as report" from run detail and digest; page-scoped chat | M | server |
|
|
265
|
+
| CallView over existing speech APIs with captions, mute, receipt | M | client |
|
|
266
|
+
| Realtime voice provider and spoken delegation to the queue | L | server |
|
|
267
|
+
| Role presets and an `instructions` field per dot | S | server |
|
|
268
|
+
| Learning candidates with owner review and publish into prompts | M | server |
|
|
269
|
+
| Browser probes for prod (load, selector, screenshot on fail) | M | server |
|
|
270
|
+
| OpenAI-compatible model backend | M | server |
|
|
271
|
+
| Opt-out setup telemetry with activation = first real verdict; documented property list and saved queries | M | server |
|
|
272
|
+
| Optional `research_failure` web search tool, default off | S | server |
|
|
273
|
+
| Persistent per-dot sandbox with named volumes for dependencies and auth state | L | server |
|
|
274
|
+
| AG-UI-compatible event shapes on `/api/chat` | M | server |
|
|
275
|
+
| Live session or recorded walkthrough two to three weeks after launch, following the OpenDots Oct 22 event pattern | S | gtm |
|
|
276
|
+
| Pitch the vertical angle to newsletters that covered OpenDots (AlphaSignal, daily.dev) | S | gtm |
|