toolroll 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +1113 -0
- package/THIRD_PARTY_NOTICES.md +449 -0
- package/dist/accent-colors.d.ts +48 -0
- package/dist/accent-colors.js +122 -0
- package/dist/action-ledger.d.ts +26 -0
- package/dist/action-ledger.js +75 -0
- package/dist/agent-fence.d.ts +42 -0
- package/dist/agent-fence.js +183 -0
- package/dist/agentconfig.d.ts +216 -0
- package/dist/agentconfig.js +454 -0
- package/dist/api-tokens.d.ts +16 -0
- package/dist/api-tokens.js +27 -0
- package/dist/approval-policy.d.ts +69 -0
- package/dist/approval-policy.js +137 -0
- package/dist/approval-rules-ui.d.ts +25 -0
- package/dist/approval-rules-ui.js +39 -0
- package/dist/assignment-adapters.d.ts +180 -0
- package/dist/assignment-adapters.js +239 -0
- package/dist/assignment-brief.d.ts +71 -0
- package/dist/assignment-brief.js +129 -0
- package/dist/assignment-delivery.d.ts +56 -0
- package/dist/assignment-delivery.js +160 -0
- package/dist/assignment-presentation.d.ts +26 -0
- package/dist/assignment-presentation.js +80 -0
- package/dist/assignment-status.d.ts +62 -0
- package/dist/assignment-status.js +152 -0
- package/dist/assignment-ui.d.ts +71 -0
- package/dist/assignment-ui.js +103 -0
- package/dist/assignment.d.ts +222 -0
- package/dist/assignment.js +399 -0
- package/dist/attest.d.ts +56 -0
- package/dist/attest.js +153 -0
- package/dist/backend.d.ts +97 -0
- package/dist/backend.js +166 -0
- package/dist/backup-ui.d.ts +22 -0
- package/dist/backup-ui.js +59 -0
- package/dist/backup.d.ts +84 -0
- package/dist/backup.js +421 -0
- package/dist/beads.d.ts +34 -0
- package/dist/beads.js +135 -0
- package/dist/bin.d.ts +2 -0
- package/dist/bin.js +22 -0
- package/dist/board.d.ts +150 -0
- package/dist/board.js +210 -0
- package/dist/boot-identity.d.ts +63 -0
- package/dist/boot-identity.js +99 -0
- package/dist/browser/THIRD_PARTY_NOTICES.txt +2295 -0
- package/dist/browser/workspace.css +4 -0
- package/dist/browser/workspace.js +225 -0
- package/dist/browser-crew.d.ts +11 -0
- package/dist/browser-crew.js +50 -0
- package/dist/browser-shell.d.ts +8 -0
- package/dist/browser-shell.js +60 -0
- package/dist/browser-workspace.d.ts +780 -0
- package/dist/browser-workspace.js +47 -0
- package/dist/budget-alerts.d.ts +19 -0
- package/dist/budget-alerts.js +46 -0
- package/dist/builder.d.ts +370 -0
- package/dist/builder.js +3262 -0
- package/dist/capscan.d.ts +35 -0
- package/dist/capscan.js +113 -0
- package/dist/chat-acceptance.d.ts +71 -0
- package/dist/chat-acceptance.js +120 -0
- package/dist/chat-actions.d.ts +265 -0
- package/dist/chat-actions.js +1273 -0
- package/dist/chat-channel.d.ts +109 -0
- package/dist/chat-channel.js +652 -0
- package/dist/chat-continuity.d.ts +32 -0
- package/dist/chat-continuity.js +317 -0
- package/dist/chat-controls.d.ts +113 -0
- package/dist/chat-controls.js +53 -0
- package/dist/chat-delivery-state.d.ts +159 -0
- package/dist/chat-delivery-state.js +309 -0
- package/dist/chat-delivery.d.ts +38 -0
- package/dist/chat-delivery.js +693 -0
- package/dist/chat-display.d.ts +1 -0
- package/dist/chat-display.js +18 -0
- package/dist/chat-evidence.d.ts +123 -0
- package/dist/chat-evidence.js +207 -0
- package/dist/chat-flow.d.ts +44 -0
- package/dist/chat-flow.js +215 -0
- package/dist/chat-inbox.d.ts +57 -0
- package/dist/chat-inbox.js +123 -0
- package/dist/chat-polish.d.ts +16 -0
- package/dist/chat-polish.js +135 -0
- package/dist/chat-review.d.ts +46 -0
- package/dist/chat-review.js +98 -0
- package/dist/chat-rooms.d.ts +123 -0
- package/dist/chat-rooms.js +216 -0
- package/dist/chat-task-actions.d.ts +44 -0
- package/dist/chat-task-actions.js +79 -0
- package/dist/check-progress.d.ts +51 -0
- package/dist/check-progress.js +290 -0
- package/dist/child-database.d.ts +12 -0
- package/dist/child-database.js +30 -0
- package/dist/claim.d.ts +688 -0
- package/dist/claim.js +1740 -0
- package/dist/cli.d.ts +137 -0
- package/dist/cli.js +1461 -0
- package/dist/codex-limits.d.ts +15 -0
- package/dist/codex-limits.js +145 -0
- package/dist/coding-context.d.ts +55 -0
- package/dist/coding-context.js +92 -0
- package/dist/coding-handoff.d.ts +57 -0
- package/dist/coding-handoff.js +277 -0
- package/dist/coding-provider.d.ts +72 -0
- package/dist/coding-provider.js +424 -0
- package/dist/coding-shipping-ui.d.ts +4 -0
- package/dist/coding-shipping-ui.js +12 -0
- package/dist/coding-types.d.ts +62 -0
- package/dist/coding-types.js +1 -0
- package/dist/coding-ui.d.ts +17 -0
- package/dist/coding-ui.js +364 -0
- package/dist/coding-update.d.ts +15 -0
- package/dist/coding-update.js +149 -0
- package/dist/coding-workspace.d.ts +124 -0
- package/dist/coding-workspace.js +768 -0
- package/dist/container-state.d.ts +5 -0
- package/dist/container-state.js +62 -0
- package/dist/containment.d.ts +197 -0
- package/dist/containment.js +559 -0
- package/dist/contest.d.ts +318 -0
- package/dist/contest.js +753 -0
- package/dist/control-setup.d.ts +35 -0
- package/dist/control-setup.js +40 -0
- package/dist/control-ui.d.ts +29 -0
- package/dist/control-ui.js +53 -0
- package/dist/controller-service.d.ts +1 -0
- package/dist/controller-service.js +19 -0
- package/dist/controller-supervisor.d.ts +30 -0
- package/dist/controller-supervisor.js +104 -0
- package/dist/converse.d.ts +304 -0
- package/dist/converse.js +849 -0
- package/dist/coordinator-proposals.d.ts +29 -0
- package/dist/coordinator-proposals.js +137 -0
- package/dist/coordinator.d.ts +186 -0
- package/dist/coordinator.js +447 -0
- package/dist/credentials-ui.d.ts +25 -0
- package/dist/credentials-ui.js +48 -0
- package/dist/daemon.d.ts +209 -0
- package/dist/daemon.js +604 -0
- package/dist/decision.d.ts +120 -0
- package/dist/decision.js +388 -0
- package/dist/demo.d.ts +55 -0
- package/dist/demo.js +992 -0
- package/dist/desktop-access.d.ts +28 -0
- package/dist/desktop-access.js +88 -0
- package/dist/desktop-bundle.d.ts +16 -0
- package/dist/desktop-bundle.js +74 -0
- package/dist/desktop-host.d.ts +54 -0
- package/dist/desktop-host.js +508 -0
- package/dist/desktop-update-gate.d.ts +12 -0
- package/dist/desktop-update-gate.js +91 -0
- package/dist/desktop-update-recovery.d.ts +14 -0
- package/dist/desktop-update-recovery.js +243 -0
- package/dist/desktop-update.d.ts +110 -0
- package/dist/desktop-update.js +740 -0
- package/dist/discord-api.d.ts +20 -0
- package/dist/discord-api.js +138 -0
- package/dist/discord-chat.d.ts +16 -0
- package/dist/discord-chat.js +381 -0
- package/dist/discord-settings.d.ts +7 -0
- package/dist/discord-settings.js +75 -0
- package/dist/discord.d.ts +10 -0
- package/dist/discord.js +169 -0
- package/dist/discover.d.ts +75 -0
- package/dist/discover.js +150 -0
- package/dist/dispatch.d.ts +100 -0
- package/dist/dispatch.js +311 -0
- package/dist/dispose.d.ts +161 -0
- package/dist/dispose.js +803 -0
- package/dist/email-settings.d.ts +34 -0
- package/dist/email-settings.js +50 -0
- package/dist/envelope.d.ts +47 -0
- package/dist/envelope.js +105 -0
- package/dist/evidence-pack.d.ts +185 -0
- package/dist/evidence-pack.js +258 -0
- package/dist/evidence.d.ts +345 -0
- package/dist/evidence.js +782 -0
- package/dist/exec.d.ts +285 -0
- package/dist/exec.js +1841 -0
- package/dist/exhaustion.d.ts +85 -0
- package/dist/exhaustion.js +141 -0
- package/dist/export-ui.d.ts +4 -0
- package/dist/export-ui.js +17 -0
- package/dist/export.d.ts +48 -0
- package/dist/export.js +305 -0
- package/dist/flow-actions.d.ts +77 -0
- package/dist/flow-actions.js +203 -0
- package/dist/flow-code.d.ts +50 -0
- package/dist/flow-code.js +159 -0
- package/dist/flow-draft.d.ts +38 -0
- package/dist/flow-draft.js +80 -0
- package/dist/flow-engine.d.ts +66 -0
- package/dist/flow-engine.js +416 -0
- package/dist/flow-insights.d.ts +95 -0
- package/dist/flow-insights.js +149 -0
- package/dist/flow-live.d.ts +24 -0
- package/dist/flow-live.js +150 -0
- package/dist/flow-people.d.ts +24 -0
- package/dist/flow-people.js +91 -0
- package/dist/flow-replies.d.ts +48 -0
- package/dist/flow-replies.js +113 -0
- package/dist/flow-scripts.d.ts +38 -0
- package/dist/flow-scripts.js +73 -0
- package/dist/flow-secrets.d.ts +13 -0
- package/dist/flow-secrets.js +45 -0
- package/dist/flow-sort.d.ts +82 -0
- package/dist/flow-sort.js +153 -0
- package/dist/flow-steps.d.ts +40 -0
- package/dist/flow-steps.js +408 -0
- package/dist/flow-triggers.d.ts +244 -0
- package/dist/flow-triggers.js +959 -0
- package/dist/flows-ui.d.ts +20 -0
- package/dist/flows-ui.js +175 -0
- package/dist/flows.d.ts +229 -0
- package/dist/flows.js +968 -0
- package/dist/fonts.d.ts +19 -0
- package/dist/fonts.js +19 -0
- package/dist/gaps.d.ts +35 -0
- package/dist/gaps.js +101 -0
- package/dist/gate-failure.d.ts +40 -0
- package/dist/gate-failure.js +66 -0
- package/dist/git.d.ts +54 -0
- package/dist/git.js +94 -0
- package/dist/google-mail.d.ts +58 -0
- package/dist/google-mail.js +151 -0
- package/dist/grant.d.ts +136 -0
- package/dist/grant.js +238 -0
- package/dist/graph.d.ts +164 -0
- package/dist/graph.js +383 -0
- package/dist/guides.d.ts +22 -0
- package/dist/guides.js +363 -0
- package/dist/held.d.ts +150 -0
- package/dist/held.js +799 -0
- package/dist/invoke.d.ts +112 -0
- package/dist/invoke.js +780 -0
- package/dist/issues.d.ts +41 -0
- package/dist/issues.js +131 -0
- package/dist/job-object-helper.ps1 +252 -0
- package/dist/jsonl-discriminants.d.ts +11 -0
- package/dist/jsonl-discriminants.js +93 -0
- package/dist/keys.d.ts +104 -0
- package/dist/keys.js +229 -0
- package/dist/kits-ui.d.ts +17 -0
- package/dist/kits-ui.js +46 -0
- package/dist/kits.d.ts +86 -0
- package/dist/kits.js +215 -0
- package/dist/knowledge-cli.d.ts +101 -0
- package/dist/knowledge-cli.js +92 -0
- package/dist/knowledge-ui.d.ts +24 -0
- package/dist/knowledge-ui.js +40 -0
- package/dist/lead-context.d.ts +8 -0
- package/dist/lead-context.js +56 -0
- package/dist/lead-follow.d.ts +22 -0
- package/dist/lead-follow.js +167 -0
- package/dist/lead-status.d.ts +75 -0
- package/dist/lead-status.js +285 -0
- package/dist/ledger-chain.d.ts +46 -0
- package/dist/ledger-chain.js +187 -0
- package/dist/ledger-csv.d.ts +4 -0
- package/dist/ledger-csv.js +11 -0
- package/dist/ledger-view.d.ts +24 -0
- package/dist/ledger-view.js +58 -0
- package/dist/limits-ui.d.ts +26 -0
- package/dist/limits-ui.js +67 -0
- package/dist/link.d.ts +72 -0
- package/dist/link.js +217 -0
- package/dist/live.d.ts +96 -0
- package/dist/live.js +366 -0
- package/dist/liveness.d.ts +30 -0
- package/dist/liveness.js +42 -0
- package/dist/log.d.ts +7 -0
- package/dist/log.js +25 -0
- package/dist/mailbox.d.ts +57 -0
- package/dist/mailbox.js +150 -0
- package/dist/maintenance.d.ts +11 -0
- package/dist/maintenance.js +35 -0
- package/dist/mate-cli.d.ts +52 -0
- package/dist/mate-cli.js +345 -0
- package/dist/mate-contract.d.ts +10 -0
- package/dist/mate-contract.js +30 -0
- package/dist/mate-doors.d.ts +69 -0
- package/dist/mate-doors.js +548 -0
- package/dist/mate-progress.d.ts +29 -0
- package/dist/mate-progress.js +121 -0
- package/dist/mate-tools.d.ts +94 -0
- package/dist/mate-tools.js +1878 -0
- package/dist/mate.d.ts +92 -0
- package/dist/mate.js +435 -0
- package/dist/mcp-connect.d.ts +103 -0
- package/dist/mcp-connect.js +252 -0
- package/dist/mcp.d.ts +27 -0
- package/dist/mcp.js +651 -0
- package/dist/memory-cli.d.ts +466 -0
- package/dist/memory-cli.js +111 -0
- package/dist/memory-pass.d.ts +160 -0
- package/dist/memory-pass.js +409 -0
- package/dist/metrics.d.ts +3 -0
- package/dist/metrics.js +56 -0
- package/dist/mobile-viewport.d.ts +3 -0
- package/dist/mobile-viewport.js +37 -0
- package/dist/model-catalog.d.ts +118 -0
- package/dist/model-catalog.js +376 -0
- package/dist/models-cli.d.ts +102 -0
- package/dist/models-cli.js +66 -0
- package/dist/models-ui.d.ts +34 -0
- package/dist/models-ui.js +68 -0
- package/dist/modes.d.ts +80 -0
- package/dist/modes.js +182 -0
- package/dist/monitoring-settings.d.ts +44 -0
- package/dist/monitoring-settings.js +173 -0
- package/dist/monitoring-ui.d.ts +20 -0
- package/dist/monitoring-ui.js +51 -0
- package/dist/monitoring.d.ts +34 -0
- package/dist/monitoring.js +221 -0
- package/dist/names.d.ts +67 -0
- package/dist/names.js +102 -0
- package/dist/observations.d.ts +40 -0
- package/dist/observations.js +211 -0
- package/dist/oidc.d.ts +71 -0
- package/dist/oidc.js +182 -0
- package/dist/onboard.d.ts +108 -0
- package/dist/onboard.js +325 -0
- package/dist/openrouter-models.d.ts +30 -0
- package/dist/openrouter-models.js +120 -0
- package/dist/operate.d.ts +118 -0
- package/dist/operate.js +11321 -0
- package/dist/peek-cli.d.ts +97 -0
- package/dist/peek-cli.js +215 -0
- package/dist/peek.d.ts +134 -0
- package/dist/peek.js +578 -0
- package/dist/phase-routing.d.ts +307 -0
- package/dist/phase-routing.js +658 -0
- package/dist/plan-auto.d.ts +14 -0
- package/dist/plan-auto.js +92 -0
- package/dist/plan.d.ts +186 -0
- package/dist/plan.js +401 -0
- package/dist/planner-source.d.ts +251 -0
- package/dist/planner-source.js +460 -0
- package/dist/planner.d.ts +75 -0
- package/dist/planner.js +992 -0
- package/dist/policy-ui.d.ts +20 -0
- package/dist/policy-ui.js +41 -0
- package/dist/policy.d.ts +111 -0
- package/dist/policy.js +231 -0
- package/dist/prepared-evidence.d.ts +16 -0
- package/dist/prepared-evidence.js +96 -0
- package/dist/pricing.d.ts +45 -0
- package/dist/pricing.js +77 -0
- package/dist/principal.d.ts +42 -0
- package/dist/principal.js +82 -0
- package/dist/probe.d.ts +46 -0
- package/dist/probe.js +79 -0
- package/dist/process-custody.d.ts +17 -0
- package/dist/process-custody.js +91 -0
- package/dist/process-liveness.d.ts +10 -0
- package/dist/process-liveness.js +81 -0
- package/dist/process-recovery-anchor.d.ts +75 -0
- package/dist/process-recovery-anchor.js +188 -0
- package/dist/process-recovery-coalition.d.ts +25 -0
- package/dist/process-recovery-coalition.js +105 -0
- package/dist/process-recovery-eligibility.d.ts +178 -0
- package/dist/process-recovery-eligibility.js +170 -0
- package/dist/process-recovery-native.d.ts +172 -0
- package/dist/process-recovery-native.js +592 -0
- package/dist/process-recovery-provenance.d.ts +163 -0
- package/dist/process-recovery-provenance.js +292 -0
- package/dist/process-recovery-services.d.ts +56 -0
- package/dist/process-recovery-services.js +191 -0
- package/dist/process-recovery-settlement.d.ts +32 -0
- package/dist/process-recovery-settlement.js +132 -0
- package/dist/process-recovery.d.ts +41 -0
- package/dist/process-recovery.js +91 -0
- package/dist/process-tree.d.ts +41 -0
- package/dist/process-tree.js +264 -0
- package/dist/project-access.d.ts +14 -0
- package/dist/project-access.js +34 -0
- package/dist/project-cli.d.ts +18 -0
- package/dist/project-cli.js +104 -0
- package/dist/project-delete-ui.d.ts +22 -0
- package/dist/project-delete-ui.js +48 -0
- package/dist/project-delete.d.ts +55 -0
- package/dist/project-delete.js +413 -0
- package/dist/project-knowledge.d.ts +111 -0
- package/dist/project-knowledge.js +241 -0
- package/dist/project-learning.d.ts +100 -0
- package/dist/project-learning.js +438 -0
- package/dist/project-memory.d.ts +81 -0
- package/dist/project-memory.js +264 -0
- package/dist/project-skills.d.ts +152 -0
- package/dist/project-skills.js +660 -0
- package/dist/project-tools.d.ts +219 -0
- package/dist/project-tools.js +796 -0
- package/dist/project.d.ts +61 -0
- package/dist/project.js +125 -0
- package/dist/prompt.d.ts +22 -0
- package/dist/prompt.js +72 -0
- package/dist/proof.d.ts +513 -0
- package/dist/proof.js +1140 -0
- package/dist/proposal.d.ts +82 -0
- package/dist/proposal.js +210 -0
- package/dist/provider-connection.d.ts +22 -0
- package/dist/provider-connection.js +98 -0
- package/dist/provider-limits.d.ts +35 -0
- package/dist/provider-limits.js +95 -0
- package/dist/provider.d.ts +279 -0
- package/dist/provider.js +935 -0
- package/dist/publish.d.ts +107 -0
- package/dist/publish.js +650 -0
- package/dist/pulls.d.ts +118 -0
- package/dist/pulls.js +240 -0
- package/dist/push.d.ts +95 -0
- package/dist/push.js +353 -0
- package/dist/quality.d.ts +8 -0
- package/dist/quality.js +6 -0
- package/dist/recipe-ui.d.ts +18 -0
- package/dist/recipe-ui.js +152 -0
- package/dist/recipes.d.ts +81 -0
- package/dist/recipes.js +332 -0
- package/dist/remote.d.ts +67 -0
- package/dist/remote.js +122 -0
- package/dist/render.d.ts +64 -0
- package/dist/render.js +587 -0
- package/dist/report-summary.d.ts +13 -0
- package/dist/report-summary.js +15 -0
- package/dist/repos.d.ts +65 -0
- package/dist/repos.js +277 -0
- package/dist/repository-context-ui.d.ts +2 -0
- package/dist/repository-context-ui.js +10 -0
- package/dist/repository-context.d.ts +67 -0
- package/dist/repository-context.js +376 -0
- package/dist/restart-certification.d.ts +134 -0
- package/dist/restart-certification.js +226 -0
- package/dist/result-actions.d.ts +28 -0
- package/dist/result-actions.js +270 -0
- package/dist/result-completion.d.ts +18 -0
- package/dist/result-completion.js +66 -0
- package/dist/result-review.d.ts +213 -0
- package/dist/result-review.js +430 -0
- package/dist/retention-ui.d.ts +12 -0
- package/dist/retention-ui.js +39 -0
- package/dist/retention.d.ts +72 -0
- package/dist/retention.js +288 -0
- package/dist/review-context.d.ts +243 -0
- package/dist/review-context.js +1043 -0
- package/dist/review-evidence.d.ts +33 -0
- package/dist/review-evidence.js +56 -0
- package/dist/reviewer.d.ts +97 -0
- package/dist/reviewer.js +202 -0
- package/dist/routine.d.ts +228 -0
- package/dist/routine.js +764 -0
- package/dist/runner.d.ts +266 -0
- package/dist/runner.js +399 -0
- package/dist/scan.d.ts +32 -0
- package/dist/scan.js +92 -0
- package/dist/scope.d.ts +695 -0
- package/dist/scope.js +1176 -0
- package/dist/scout-report.d.ts +42 -0
- package/dist/scout-report.js +108 -0
- package/dist/scout.d.ts +69 -0
- package/dist/scout.js +351 -0
- package/dist/serve.d.ts +313 -0
- package/dist/serve.js +21776 -0
- package/dist/session-brief.d.ts +8 -0
- package/dist/session-brief.js +24 -0
- package/dist/session-cli.d.ts +13 -0
- package/dist/session-cli.js +284 -0
- package/dist/session-contract.d.ts +183 -0
- package/dist/session-contract.js +122 -0
- package/dist/session-http.d.ts +19 -0
- package/dist/session-http.js +154 -0
- package/dist/session-server.d.ts +12 -0
- package/dist/session-server.js +37 -0
- package/dist/session-service.d.ts +22 -0
- package/dist/session-service.js +157 -0
- package/dist/setup-guide.d.ts +39 -0
- package/dist/setup-guide.js +93 -0
- package/dist/sign-in-guard.d.ts +45 -0
- package/dist/sign-in-guard.js +74 -0
- package/dist/skills-ui.d.ts +11 -0
- package/dist/skills-ui.js +58 -0
- package/dist/skills.d.ts +97 -0
- package/dist/skills.js +276 -0
- package/dist/slack-api.d.ts +55 -0
- package/dist/slack-api.js +229 -0
- package/dist/slack-chat.d.ts +28 -0
- package/dist/slack-chat.js +413 -0
- package/dist/slack-settings.d.ts +7 -0
- package/dist/slack-settings.js +75 -0
- package/dist/slack-state.d.ts +13 -0
- package/dist/slack-state.js +9 -0
- package/dist/slack.d.ts +13 -0
- package/dist/slack.js +167 -0
- package/dist/spend-ui.d.ts +28 -0
- package/dist/spend-ui.js +95 -0
- package/dist/spend.d.ts +142 -0
- package/dist/spend.js +313 -0
- package/dist/sqlite-runtime.d.ts +3 -0
- package/dist/sqlite-runtime.js +6 -0
- package/dist/sso-settings.d.ts +33 -0
- package/dist/sso-settings.js +103 -0
- package/dist/sso-ui.d.ts +22 -0
- package/dist/sso-ui.js +39 -0
- package/dist/storage.d.ts +15 -0
- package/dist/storage.js +84 -0
- package/dist/store.d.ts +7754 -0
- package/dist/store.js +23279 -0
- package/dist/structured-output.d.ts +58 -0
- package/dist/structured-output.js +103 -0
- package/dist/style-asset.d.ts +7 -0
- package/dist/style-asset.js +41 -0
- package/dist/subscription-chat.d.ts +46 -0
- package/dist/subscription-chat.js +275 -0
- package/dist/summary.d.ts +33 -0
- package/dist/summary.js +71 -0
- package/dist/supervisor.mjs +297 -0
- package/dist/surface.d.ts +63 -0
- package/dist/surface.js +352 -0
- package/dist/sync.d.ts +94 -0
- package/dist/sync.js +279 -0
- package/dist/task-composer.d.ts +13 -0
- package/dist/task-composer.js +52 -0
- package/dist/task-control.d.ts +165 -0
- package/dist/task-control.js +214 -0
- package/dist/task-outcome-cli.d.ts +10 -0
- package/dist/task-outcome-cli.js +92 -0
- package/dist/task-text.d.ts +30 -0
- package/dist/task-text.js +41 -0
- package/dist/team-cli.d.ts +15 -0
- package/dist/team-cli.js +618 -0
- package/dist/team-contract.d.ts +92 -0
- package/dist/team-contract.js +1 -0
- package/dist/team-http.d.ts +17 -0
- package/dist/team-http.js +144 -0
- package/dist/team-leads.d.ts +81 -0
- package/dist/team-leads.js +565 -0
- package/dist/team-runtime.d.ts +27 -0
- package/dist/team-runtime.js +264 -0
- package/dist/team-ui.d.ts +3 -0
- package/dist/team-ui.js +9 -0
- package/dist/team-updates.d.ts +8 -0
- package/dist/team-updates.js +57 -0
- package/dist/teammate-admin.d.ts +53 -0
- package/dist/teammate-admin.js +111 -0
- package/dist/teammate-desk.d.ts +60 -0
- package/dist/teammate-desk.js +154 -0
- package/dist/teammate-memory.d.ts +64 -0
- package/dist/teammate-memory.js +196 -0
- package/dist/teammate-question.d.ts +59 -0
- package/dist/teammate-question.js +175 -0
- package/dist/teammate-tools.d.ts +108 -0
- package/dist/teammate-tools.js +271 -0
- package/dist/teammate-week.d.ts +68 -0
- package/dist/teammate-week.js +132 -0
- package/dist/teammate-work.d.ts +76 -0
- package/dist/teammate-work.js +280 -0
- package/dist/teammates-ui.d.ts +20 -0
- package/dist/teammates-ui.js +166 -0
- package/dist/teammates.d.ts +180 -0
- package/dist/teammates.js +253 -0
- package/dist/teams-api.d.ts +33 -0
- package/dist/teams-api.js +204 -0
- package/dist/teams-chat.d.ts +26 -0
- package/dist/teams-chat.js +215 -0
- package/dist/teams-settings.d.ts +12 -0
- package/dist/teams-settings.js +57 -0
- package/dist/teams.d.ts +21 -0
- package/dist/teams.js +124 -0
- package/dist/telegram-flow.d.ts +49 -0
- package/dist/telegram-flow.js +110 -0
- package/dist/telegram-mate.d.ts +137 -0
- package/dist/telegram-mate.js +707 -0
- package/dist/telegram-progress.d.ts +14 -0
- package/dist/telegram-progress.js +129 -0
- package/dist/telegram-settings.d.ts +9 -0
- package/dist/telegram-settings.js +36 -0
- package/dist/telegram-status.d.ts +75 -0
- package/dist/telegram-status.js +265 -0
- package/dist/telegram-team.d.ts +85 -0
- package/dist/telegram-team.js +359 -0
- package/dist/telegram.d.ts +230 -0
- package/dist/telegram.js +1931 -0
- package/dist/templates.d.ts +65 -0
- package/dist/templates.js +118 -0
- package/dist/tool-launcher.d.ts +1 -0
- package/dist/tool-launcher.js +101 -0
- package/dist/tools-ui.d.ts +30 -0
- package/dist/tools-ui.js +40 -0
- package/dist/transitions-recipes.d.ts +1 -0
- package/dist/transitions-recipes.js +203 -0
- package/dist/tree-proof.d.ts +34 -0
- package/dist/tree-proof.js +58 -0
- package/dist/verification-evidence.d.ts +44 -0
- package/dist/verification-evidence.js +238 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.js +10 -0
- package/dist/webhooks.d.ts +91 -0
- package/dist/webhooks.js +283 -0
- package/dist/work-index.d.ts +68 -0
- package/dist/work-index.js +384 -0
- package/dist/work-summary.d.ts +57 -0
- package/dist/work-summary.js +116 -0
- package/dist/workspace-motion.d.ts +4 -0
- package/dist/workspace-motion.js +133 -0
- package/dist/workspace-revision.d.ts +19 -0
- package/dist/workspace-revision.js +92 -0
- package/dist/workspace-ui.d.ts +204 -0
- package/dist/workspace-ui.js +411 -0
- package/dist/worktree-notices.d.ts +13 -0
- package/dist/worktree-notices.js +17 -0
- package/dist/worktree.d.ts +249 -0
- package/dist/worktree.js +720 -0
- package/package.json +122 -0
- package/scripts/canary-assertions.mjs +42 -0
- package/scripts/crash-canary.mjs +253 -0
- package/scripts/fixtures/crash-process.mjs +74 -0
- package/scripts/fixtures/pilot-scenarios.mjs +85 -0
- package/scripts/fixtures/restart-service.mjs +27 -0
- package/scripts/launchd-certification.mjs +143 -0
- package/scripts/pilot.mjs +121 -0
- package/scripts/proof-preflight.mjs +140 -0
- package/scripts/provider-canary.mjs +379 -0
- package/scripts/recovery-canary.mjs +135 -0
- package/scripts/restart-certification.mjs +98 -0
package/dist/grant.js
ADDED
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Permission to write to somebody else's tracker.
|
|
3
|
+
*
|
|
4
|
+
* Everything up to here reads. This is the line, and it is drawn deliberately
|
|
5
|
+
* wide of where it needs to be: discovery indexes everything it can see, and
|
|
6
|
+
* Toolroll drives only what has been handed over, one repository and one
|
|
7
|
+
* backend at a time, by a person, in an act that shows its own consequences
|
|
8
|
+
* first.
|
|
9
|
+
*
|
|
10
|
+
* The grant is not a boolean. A yes/no flag would answer "may I write here"
|
|
11
|
+
* and leave every interesting question — write *what*, to *which* tasks, with
|
|
12
|
+
* *whose* credentials, visible to *whom* — to whatever the agent decided at
|
|
13
|
+
* 3am. So the record carries all of them, and the check is against the whole
|
|
14
|
+
* thing.
|
|
15
|
+
*
|
|
16
|
+
* Two defaults are load-bearing.
|
|
17
|
+
*
|
|
18
|
+
* **Only tasks we created or were given.** An operator enrolling a repository
|
|
19
|
+
* with four hundred open issues is not volunteering all four hundred to an
|
|
20
|
+
* unattended agent, and reading enrollment that way is how a tool ends up
|
|
21
|
+
* closing somebody's backlog overnight.
|
|
22
|
+
*
|
|
23
|
+
* **Closing is not included.** Creating a task is additive and reversible;
|
|
24
|
+
* transitioning one we own is ours to do; closing work somebody else filed is
|
|
25
|
+
* neither, so it is off unless explicitly granted. Widening takes another
|
|
26
|
+
* human action, which is the design's rule and not a nicety.
|
|
27
|
+
*
|
|
28
|
+
* Absence of a grant is denial. There is no implicit, inherited, or default
|
|
29
|
+
* permission anywhere in this module — an unknown repository is refused for
|
|
30
|
+
* the same reason an unknown lease is: silence is not consent.
|
|
31
|
+
*/
|
|
32
|
+
import { run } from "./exec.js";
|
|
33
|
+
export const MUTATION_CLASSES = [
|
|
34
|
+
"create",
|
|
35
|
+
"transition",
|
|
36
|
+
"edge",
|
|
37
|
+
"hold",
|
|
38
|
+
"close",
|
|
39
|
+
"comment",
|
|
40
|
+
];
|
|
41
|
+
/** Granted unless asked otherwise; `close` is the deliberate omission. */
|
|
42
|
+
export const DEFAULT_MUTATIONS = ["create", "transition", "edge", "hold"];
|
|
43
|
+
/**
|
|
44
|
+
* Whether this write is inside the grant.
|
|
45
|
+
*
|
|
46
|
+
* Written as a pure function over the whole grant so the policy can be read in
|
|
47
|
+
* one place and tested without a database, a repository, or a network — the
|
|
48
|
+
* three things that make a permission check hard to trust.
|
|
49
|
+
*/
|
|
50
|
+
export function permits(grant, request) {
|
|
51
|
+
if (grant === null) {
|
|
52
|
+
return {
|
|
53
|
+
ok: false,
|
|
54
|
+
reason: "no-grant",
|
|
55
|
+
message: `${request.repo} is not enrolled for ${request.backend} — \`toolroll enroll\` grants write access`,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
// The grant has to be *this* grant. Callers look one up and pass it in, and
|
|
59
|
+
// a caller that looks up the wrong one — or reuses a handle across
|
|
60
|
+
// repositories in a loop — would otherwise have repo A's permission applied
|
|
61
|
+
// to repo B. Re-checking here costs a string compare and removes a class of
|
|
62
|
+
// confused-deputy bug that no amount of care at the call site can rule out.
|
|
63
|
+
if (grant.repo !== request.repo || grant.backend !== request.backend) {
|
|
64
|
+
return {
|
|
65
|
+
ok: false,
|
|
66
|
+
reason: "no-grant",
|
|
67
|
+
message: `that grant is for ${grant.backend} in ${grant.repo}, not ${request.backend} in ${request.repo}`,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
if (!grant.mutations.includes(request.mutation)) {
|
|
71
|
+
return {
|
|
72
|
+
ok: false,
|
|
73
|
+
reason: "mutation",
|
|
74
|
+
message: `the grant on ${request.repo} does not allow \`${request.mutation}\` (it allows ${grant.mutations.join(", ")})`,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
if (grant.selector === "ours" && request.origin === "theirs") {
|
|
78
|
+
return {
|
|
79
|
+
ok: false,
|
|
80
|
+
reason: "selector",
|
|
81
|
+
message: `the grant on ${request.repo} covers only tasks Toolroll created or was given`,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
// A path outside the declared set is the case this is really for: a grant
|
|
85
|
+
// over `.beads/` must not become a licence to edit the working tree.
|
|
86
|
+
if (request.path !== undefined && !grant.paths.some(allowed => within(request.path, allowed))) {
|
|
87
|
+
return {
|
|
88
|
+
ok: false,
|
|
89
|
+
reason: "path",
|
|
90
|
+
message: `${request.path} is outside the grant on ${request.repo} (${grant.paths.join(", ")})`,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
return { ok: true };
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Whether `path` is the granted scope or sits inside it.
|
|
97
|
+
*
|
|
98
|
+
* Segment-aware, so `.beads-backup` is not inside `.beads`, and `..` is
|
|
99
|
+
* resolved before comparing — without that, `.beads/../src/index.ts` starts
|
|
100
|
+
* with `.beads/` and a grant over a tracker's data directory becomes a licence
|
|
101
|
+
* to rewrite the working tree.
|
|
102
|
+
*
|
|
103
|
+
* This is a lexical check and says so. A symlink inside the granted directory
|
|
104
|
+
* still points wherever it points, and no amount of string handling will catch
|
|
105
|
+
* that; the boundary for it is the worktree the runner is confined to, which
|
|
106
|
+
* is M1's problem and not this function's.
|
|
107
|
+
*/
|
|
108
|
+
function within(path, allowed) {
|
|
109
|
+
const target = resolveSegments(path);
|
|
110
|
+
const scope = resolveSegments(allowed);
|
|
111
|
+
if (target === null || scope === null)
|
|
112
|
+
return false;
|
|
113
|
+
return target === scope || target.startsWith(`${scope}/`);
|
|
114
|
+
}
|
|
115
|
+
/** null when the path climbs above its own root, which is never inside anything. */
|
|
116
|
+
function resolveSegments(path) {
|
|
117
|
+
const out = [];
|
|
118
|
+
for (const segment of normalise(path).split("/")) {
|
|
119
|
+
if (segment === "" || segment === ".")
|
|
120
|
+
continue;
|
|
121
|
+
if (segment !== "..") {
|
|
122
|
+
out.push(segment);
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
if (out.length === 0)
|
|
126
|
+
return null;
|
|
127
|
+
out.pop();
|
|
128
|
+
}
|
|
129
|
+
return out.join("/");
|
|
130
|
+
}
|
|
131
|
+
function normalise(path) {
|
|
132
|
+
return path.replace(/\\/g, "/").replace(/\/+$/, "");
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Build the grant that would be created, including the one fact an operator
|
|
136
|
+
* cannot easily check for themselves: whether these writes will be visible.
|
|
137
|
+
*
|
|
138
|
+
* A backend that stores its data in a tracked directory means every task
|
|
139
|
+
* transition shows up in `git status` and eventually in history — which is
|
|
140
|
+
* either exactly what somebody wants, or a nasty surprise on their next
|
|
141
|
+
* commit. It is asked of git rather than assumed, because the answer differs
|
|
142
|
+
* per repository and the guess would be wrong half the time.
|
|
143
|
+
*/
|
|
144
|
+
export async function proposeGrant(options) {
|
|
145
|
+
const { repo, backend, paths, mutations = DEFAULT_MUTATIONS, selector = "ours", credentialScope = null, grantedBy = "operator", now, runner = run, } = options;
|
|
146
|
+
return {
|
|
147
|
+
repo,
|
|
148
|
+
backend,
|
|
149
|
+
paths: [...paths],
|
|
150
|
+
mutations: [...mutations],
|
|
151
|
+
selector,
|
|
152
|
+
credentialScope,
|
|
153
|
+
observedByGit: await observedByGit(repo, paths, runner),
|
|
154
|
+
grantedAt: now.toISOString(),
|
|
155
|
+
grantedBy,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* True when at least one granted path is not ignored by git.
|
|
160
|
+
*
|
|
161
|
+
* `git check-ignore` exits 0 when a path *is* ignored and 1 when it is not, so
|
|
162
|
+
* the interesting answer is the failure. Anything else — no git, an unreadable
|
|
163
|
+
* repository — is reported as observed, because claiming writes are invisible
|
|
164
|
+
* when we could not establish it is the wrong way to be wrong.
|
|
165
|
+
*
|
|
166
|
+
* Each path is asked about twice, bare and with a trailing slash, and that is
|
|
167
|
+
* not belt-and-braces. A `.gitignore` rule written `.beads/` matches only
|
|
168
|
+
* directories, and git cannot tell that a path *is* a directory when it does
|
|
169
|
+
* not exist yet — which is precisely the state at enrolment, before the
|
|
170
|
+
* tracker has been initialised. Asked bare, git says "not ignored" and the
|
|
171
|
+
* grant would tell somebody their writes are about to show up in every commit
|
|
172
|
+
* when they are not.
|
|
173
|
+
*/
|
|
174
|
+
async function observedByGit(repo, paths, runner) {
|
|
175
|
+
const local = paths.filter(path => !isRemoteRef(path));
|
|
176
|
+
if (local.length === 0)
|
|
177
|
+
return false;
|
|
178
|
+
for (const path of local) {
|
|
179
|
+
const asked = [path, `${normalise(path)}/`];
|
|
180
|
+
const ignored = await Promise.all(asked.map(async (candidate) => {
|
|
181
|
+
const result = await runner("git", ["--no-optional-locks", "check-ignore", "-q", candidate], {
|
|
182
|
+
cwd: repo,
|
|
183
|
+
});
|
|
184
|
+
return result.code === 0;
|
|
185
|
+
}));
|
|
186
|
+
if (!ignored.some(Boolean))
|
|
187
|
+
return true;
|
|
188
|
+
}
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
/** `owner/name` is a GitHub tracker, not a file in the working tree. */
|
|
192
|
+
function isRemoteRef(path) {
|
|
193
|
+
return /^[^/\\]+\/[^/\\]+$/.test(path) && !path.startsWith(".");
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* The grant, in the words an operator needs before agreeing to it — what may
|
|
197
|
+
* be touched, what may be done, to which tasks, and whether anyone else will
|
|
198
|
+
* see it happen.
|
|
199
|
+
*/
|
|
200
|
+
export function describeGrant(grant) {
|
|
201
|
+
return [
|
|
202
|
+
` repository ${grant.repo}`,
|
|
203
|
+
` backend ${grant.backend}`,
|
|
204
|
+
` may touch ${grant.paths.join(", ")}`,
|
|
205
|
+
` may do ${grant.mutations.join(", ")}`,
|
|
206
|
+
` on tasks ${grant.selector === "ours" ? "only those Toolroll created or was given" : "every task in the tracker"}`,
|
|
207
|
+
` credentials ${grant.credentialScope ?? "none of its own — it uses the ones already on this machine"}`,
|
|
208
|
+
` visibility ${describeVisibility(grant)}`,
|
|
209
|
+
];
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Who will see these writes.
|
|
213
|
+
*
|
|
214
|
+
* Careful about what git can actually tell us. `check-ignore` answers whether
|
|
215
|
+
* a path would show up in `git status` — it does not decide what lands in
|
|
216
|
+
* history, since nothing lands there until somebody commits. Saying "these
|
|
217
|
+
* will be in your history" would be a claim this program is in no position to
|
|
218
|
+
* make; saying they will turn up in `git status`, staged by whoever commits
|
|
219
|
+
* next, is exactly true and is the thing an operator needs to know.
|
|
220
|
+
*
|
|
221
|
+
* A remote tracker is a different question entirely: nothing about git governs
|
|
222
|
+
* it, and the writes are visible to everyone with access the moment they land.
|
|
223
|
+
*/
|
|
224
|
+
function describeVisibility(grant) {
|
|
225
|
+
const remote = grant.paths.every(isRemoteRef);
|
|
226
|
+
if (remote)
|
|
227
|
+
return "these writes are visible to anyone with access to the tracker, immediately";
|
|
228
|
+
return grant.observedByGit
|
|
229
|
+
? "these writes turn up in `git status` — whoever commits next will pick them up"
|
|
230
|
+
: "git ignores these paths, so they stay out of `git status` and out of commits";
|
|
231
|
+
}
|
|
232
|
+
/** What is not granted, which is the half people forget to read. */
|
|
233
|
+
export function describeWithheld(grant) {
|
|
234
|
+
const withheld = MUTATION_CLASSES.filter(one => !grant.mutations.includes(one));
|
|
235
|
+
if (withheld.length === 0)
|
|
236
|
+
return [];
|
|
237
|
+
return [` will not ${withheld.join(", ")} — widening takes another \`enroll\``];
|
|
238
|
+
}
|
package/dist/graph.d.ts
ADDED
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which work graph is already here.
|
|
3
|
+
*
|
|
4
|
+
* Chosen by looking, not by asking — an operator who already keeps their work
|
|
5
|
+
* in beads should not be made to declare that to a tool standing in the same
|
|
6
|
+
* directory. But **detection is not authorization.** Finding a populated
|
|
7
|
+
* tracker says it exists; it says nothing about whether its owner wants Night
|
|
8
|
+
* Orders scheduling, closing, or restructuring what is in it. Nothing here
|
|
9
|
+
* writes, enrolls, or grants anything.
|
|
10
|
+
*
|
|
11
|
+
* **Nothing is ever installed.** No package manager, no package runner, no
|
|
12
|
+
* initializer — `bd init` stages files, edits agent integrations, and can make
|
|
13
|
+
* a commit, so it is the operator's to run. This module runs read commands
|
|
14
|
+
* against binaries that are already on PATH, and prints what it cannot do.
|
|
15
|
+
*
|
|
16
|
+
* Data and runtime are detected independently, and that separation is the
|
|
17
|
+
* point. A populated tracker with no working runtime is real work that this
|
|
18
|
+
* machine cannot currently dispatch, and saying so at 9am is the whole job —
|
|
19
|
+
* the alternative is finding out inside a dead loop at 3am.
|
|
20
|
+
*
|
|
21
|
+
* Where a fact is not established it is `unverified`, and unverified fails
|
|
22
|
+
* closed. A backend whose dependency edges we cannot confirm is shown and may
|
|
23
|
+
* even be recommended, but it is not dispatchable, because §4's rule is that
|
|
24
|
+
* scheduling edges are never emulated: a private graph other tools cannot see
|
|
25
|
+
* is shadow data.
|
|
26
|
+
*/
|
|
27
|
+
import { type ExecResult, type RunOptions } from "./exec.js";
|
|
28
|
+
export type BackendKind = "beads" | "backlog-md" | "github-issues";
|
|
29
|
+
/**
|
|
30
|
+
* Whether the backend carries dependency edges of its own.
|
|
31
|
+
*
|
|
32
|
+
* `unverified` is not a soft `native`. It means nobody has confirmed it, and a
|
|
33
|
+
* scheduler must treat it as absent rather than assume in its own favour.
|
|
34
|
+
*/
|
|
35
|
+
export type Deps = "native" | "unverified" | "none";
|
|
36
|
+
export type Runtime = {
|
|
37
|
+
state: "ok";
|
|
38
|
+
version: string | null;
|
|
39
|
+
} | {
|
|
40
|
+
state: "missing";
|
|
41
|
+
binary: string;
|
|
42
|
+
} | {
|
|
43
|
+
state: "outdated";
|
|
44
|
+
version: string;
|
|
45
|
+
needs: string;
|
|
46
|
+
} | {
|
|
47
|
+
state: "unreadable";
|
|
48
|
+
reason: string;
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* What was counted, and which question it answers. A ready count and an open
|
|
52
|
+
* count are different numbers, and labelling one as the other would misreport
|
|
53
|
+
* how much work is actually dispatchable.
|
|
54
|
+
*/
|
|
55
|
+
export type Count = {
|
|
56
|
+
of: "ready" | "open";
|
|
57
|
+
value: number;
|
|
58
|
+
};
|
|
59
|
+
export type Detection = {
|
|
60
|
+
kind: BackendKind;
|
|
61
|
+
label: string;
|
|
62
|
+
/** Repositories whose data was found on disk, or which have issues. */
|
|
63
|
+
repos: string[];
|
|
64
|
+
/** null when nothing could be counted — absence of a number, not zero. */
|
|
65
|
+
count: Count | null;
|
|
66
|
+
deps: Deps;
|
|
67
|
+
runtime: Runtime;
|
|
68
|
+
/** Whether work here could actually be scheduled tonight. */
|
|
69
|
+
dispatchable: boolean;
|
|
70
|
+
/** What could not be read, in words. Never silently dropped. */
|
|
71
|
+
problems: string[];
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* The ladder from §3. `ambiguous` is a deliberate outcome and not a failure:
|
|
75
|
+
* several populated trackers mean the operator has to say which one, because
|
|
76
|
+
* task count is not write authority and the biggest tracker may be the
|
|
77
|
+
* abandoned one.
|
|
78
|
+
*/
|
|
79
|
+
export type Choice = {
|
|
80
|
+
action: "recommend";
|
|
81
|
+
kind: BackendKind;
|
|
82
|
+
dispatchable: boolean;
|
|
83
|
+
why: string;
|
|
84
|
+
} | {
|
|
85
|
+
action: "ambiguous";
|
|
86
|
+
kinds: BackendKind[];
|
|
87
|
+
why: string;
|
|
88
|
+
} | {
|
|
89
|
+
action: "built-in";
|
|
90
|
+
why: string;
|
|
91
|
+
};
|
|
92
|
+
export type ChooseOptions = {
|
|
93
|
+
/** A backend the operator already enrolled. Outranks anything detected. */
|
|
94
|
+
enrolled?: BackendKind;
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* What the operator would run to set a backend up, and what it would do to
|
|
98
|
+
* their repository.
|
|
99
|
+
*
|
|
100
|
+
* This is text, and stays text. `bd init` creates or updates `AGENTS.md` and
|
|
101
|
+
* installs Claude and Codex integrations unless told not to — which is a
|
|
102
|
+
* substantial thing to do to somebody's repository, and not ours to do on
|
|
103
|
+
* their behalf. A tool that refuses to run `bd init` for you and then quietly
|
|
104
|
+
* ran it from inside a helpful setup prompt would have spent the only
|
|
105
|
+
* credibility it had.
|
|
106
|
+
*
|
|
107
|
+
* There is deliberately no prompt. A wizard would cost the zero-config opening
|
|
108
|
+
* this tool is built around, and half the intended audience is an agent or a
|
|
109
|
+
* scheduled run, where anything that blocks on an answer simply hangs.
|
|
110
|
+
*
|
|
111
|
+
* Commands are quoted from each tool's own documentation rather than inferred.
|
|
112
|
+
* Backlog.md is detected but not offered here, because its install path has
|
|
113
|
+
* not been verified — and printing a command that has not been checked is how
|
|
114
|
+
* an operator ends up running the wrong thing on our say-so.
|
|
115
|
+
*/
|
|
116
|
+
export type SetupOption = {
|
|
117
|
+
kind: BackendKind | "built-in";
|
|
118
|
+
label: string;
|
|
119
|
+
/** null when there is nothing to install. */
|
|
120
|
+
install: string | null;
|
|
121
|
+
/** null when there is nothing to initialize. */
|
|
122
|
+
init: string | null;
|
|
123
|
+
/** What it changes in the repository. Never omitted where there is one. */
|
|
124
|
+
sideEffects: string | null;
|
|
125
|
+
note: string | null;
|
|
126
|
+
};
|
|
127
|
+
export declare function setupOptions(): SetupOption[];
|
|
128
|
+
export type Runner = (file: string, args: readonly string[], options?: RunOptions) => Promise<ExecResult>;
|
|
129
|
+
export type DetectOptions = {
|
|
130
|
+
runner?: Runner;
|
|
131
|
+
/** Injected so the pure half of detection needs no fixture tree. */
|
|
132
|
+
exists?: (path: string) => boolean;
|
|
133
|
+
};
|
|
134
|
+
/** Reading a tracker is local work; only the GitHub one crosses the network. */
|
|
135
|
+
export declare const LOCAL_TIMEOUT_MS = 10000;
|
|
136
|
+
export declare const NETWORK_TIMEOUT_MS = 20000;
|
|
137
|
+
/**
|
|
138
|
+
* Dependency fields on GitHub Issues need a newer `gh` than the REST route
|
|
139
|
+
* does. The version gate is therefore about *native edges*, not about whether
|
|
140
|
+
* issues can be read at all — an older gh still counts them, it just cannot be
|
|
141
|
+
* trusted to schedule from them.
|
|
142
|
+
*/
|
|
143
|
+
export declare const GH_DEPS_MIN_VERSION = "2.94.0";
|
|
144
|
+
export declare const LABELS: Record<BackendKind, string>;
|
|
145
|
+
export declare function detectGraphs(repos: readonly string[], options?: DetectOptions): Promise<Detection[]>;
|
|
146
|
+
/** null when no version-shaped token is present — unknown, not zero. */
|
|
147
|
+
export declare function parseVersion(text: string): string | null;
|
|
148
|
+
/** Negative, zero, or positive, like every other comparator. */
|
|
149
|
+
export declare function compareVersions(left: string, right: string): number;
|
|
150
|
+
/**
|
|
151
|
+
* The ladder from §3, as a pure function so the policy can be read and tested
|
|
152
|
+
* without a filesystem.
|
|
153
|
+
*
|
|
154
|
+
* The rung that does the most work is the third: several populated repo-local
|
|
155
|
+
* trackers mean Toolroll stays in discovery until a person says which one.
|
|
156
|
+
* Picking the largest would be inventing authority out of a row count.
|
|
157
|
+
*
|
|
158
|
+
* GitHub Issues is never chosen automatically. It has native edges, but a
|
|
159
|
+
* populated issue tracker is evidence people file issues, not evidence anyone
|
|
160
|
+
* wants an unattended agent closing them — the design requires existing
|
|
161
|
+
* dependency use *and* a confirmed write scope, and neither is established by
|
|
162
|
+
* looking.
|
|
163
|
+
*/
|
|
164
|
+
export declare function chooseBackend(detections: readonly Detection[], options?: ChooseOptions): Choice;
|