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/graph.js
ADDED
|
@@ -0,0 +1,383 @@
|
|
|
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 { existsSync } from "node:fs";
|
|
28
|
+
import { join } from "node:path";
|
|
29
|
+
import { run } from "./exec.js";
|
|
30
|
+
export function setupOptions() {
|
|
31
|
+
return [
|
|
32
|
+
{
|
|
33
|
+
kind: "beads",
|
|
34
|
+
label: LABELS.beads,
|
|
35
|
+
install: "brew install beads # or: npm install -g @beads/bd",
|
|
36
|
+
init: "bd init",
|
|
37
|
+
sideEffects: "creates .beads/, and creates or updates AGENTS.md and installs Claude/Codex integrations unless you pass --skip-agents or --stealth",
|
|
38
|
+
note: "native dependency edges and a ready query",
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
kind: "github-issues",
|
|
42
|
+
label: LABELS["github-issues"],
|
|
43
|
+
install: null,
|
|
44
|
+
init: null,
|
|
45
|
+
sideEffects: null,
|
|
46
|
+
note: `already there if the repo is on GitHub; needs gh ${GH_DEPS_MIN_VERSION}+ for dependency fields`,
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
kind: "built-in",
|
|
50
|
+
label: "built-in",
|
|
51
|
+
install: null,
|
|
52
|
+
init: null,
|
|
53
|
+
sideEffects: null,
|
|
54
|
+
note: "a deliberately small local store, not built yet",
|
|
55
|
+
},
|
|
56
|
+
];
|
|
57
|
+
}
|
|
58
|
+
const BD = "bd";
|
|
59
|
+
const GH = "gh";
|
|
60
|
+
const BACKLOG = "backlog";
|
|
61
|
+
/** Reading a tracker is local work; only the GitHub one crosses the network. */
|
|
62
|
+
export const LOCAL_TIMEOUT_MS = 10_000;
|
|
63
|
+
export const NETWORK_TIMEOUT_MS = 20_000;
|
|
64
|
+
/**
|
|
65
|
+
* Dependency fields on GitHub Issues need a newer `gh` than the REST route
|
|
66
|
+
* does. The version gate is therefore about *native edges*, not about whether
|
|
67
|
+
* issues can be read at all — an older gh still counts them, it just cannot be
|
|
68
|
+
* trusted to schedule from them.
|
|
69
|
+
*/
|
|
70
|
+
export const GH_DEPS_MIN_VERSION = "2.94.0";
|
|
71
|
+
export const LABELS = {
|
|
72
|
+
beads: "beads",
|
|
73
|
+
"backlog-md": "Backlog.md",
|
|
74
|
+
"github-issues": "GitHub Issues",
|
|
75
|
+
};
|
|
76
|
+
/** Where each repo-local tracker keeps its data, relative to the repo root. */
|
|
77
|
+
const DATA_PATHS = {
|
|
78
|
+
beads: ".beads",
|
|
79
|
+
"backlog-md": "backlog.md",
|
|
80
|
+
};
|
|
81
|
+
export async function detectGraphs(repos, options = {}) {
|
|
82
|
+
const { runner = run, exists = existsSync } = options;
|
|
83
|
+
const beadsRepos = repos.filter(repo => exists(join(repo, DATA_PATHS.beads)));
|
|
84
|
+
const backlogRepos = repos.filter(repo => exists(join(repo, DATA_PATHS["backlog-md"])));
|
|
85
|
+
const [beads, backlog, issues] = await Promise.all([
|
|
86
|
+
beadsRepos.length === 0 ? null : detectBeads(beadsRepos, runner),
|
|
87
|
+
backlogRepos.length === 0 ? null : detectBacklog(backlogRepos, runner),
|
|
88
|
+
repos.length === 0 ? null : detectIssues(repos, runner),
|
|
89
|
+
]);
|
|
90
|
+
return [beads, backlog, issues].filter((one) => one !== null);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* beads keeps its data in `.beads/`, and `bd ready --json` is the read that
|
|
94
|
+
* matters: it is the ready set, which is the same question the scheduler asks.
|
|
95
|
+
* There is no `bd list`, so an open count is not available without exporting
|
|
96
|
+
* the whole graph — and counting ready work is the more honest number anyway.
|
|
97
|
+
*/
|
|
98
|
+
async function detectBeads(repos, runner) {
|
|
99
|
+
const runtime = await probeVersion(runner, BD, ["version"], repos[0]);
|
|
100
|
+
const problems = [];
|
|
101
|
+
let count = null;
|
|
102
|
+
if (runtime.state === "ok") {
|
|
103
|
+
const counted = await countReady(runner, repos);
|
|
104
|
+
count = counted.count;
|
|
105
|
+
problems.push(...counted.problems);
|
|
106
|
+
}
|
|
107
|
+
else if (runtime.state === "missing") {
|
|
108
|
+
problems.push("bd is not on PATH — beads data is here but cannot be read or scheduled");
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
kind: "beads",
|
|
112
|
+
label: LABELS.beads,
|
|
113
|
+
repos: [...repos],
|
|
114
|
+
count,
|
|
115
|
+
deps: "native",
|
|
116
|
+
runtime,
|
|
117
|
+
// A binary that answers `version` has proved it exists, not that the ready
|
|
118
|
+
// set can be read: a locked database or a schema this build does not
|
|
119
|
+
// understand fails every read while `bd version` keeps saying yes. Reading
|
|
120
|
+
// it once is the only evidence that dispatch would work, so nothing is
|
|
121
|
+
// dispatchable until a read has actually succeeded.
|
|
122
|
+
dispatchable: runtime.state === "ok" && count !== null,
|
|
123
|
+
problems,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
async function countReady(runner, repos) {
|
|
127
|
+
const problems = [];
|
|
128
|
+
let total = 0;
|
|
129
|
+
let counted = false;
|
|
130
|
+
for (const repo of repos) {
|
|
131
|
+
const result = await runner(BD, ["ready", "--json"], {
|
|
132
|
+
cwd: repo,
|
|
133
|
+
timeoutMs: LOCAL_TIMEOUT_MS,
|
|
134
|
+
});
|
|
135
|
+
if (result.code !== 0) {
|
|
136
|
+
problems.push(`${repo}: could not read beads: ${describeFailure(result)}`);
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
const items = countArray(result.stdout);
|
|
140
|
+
if (items === null) {
|
|
141
|
+
problems.push(`${repo}: beads returned something unreadable`);
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
total += items;
|
|
145
|
+
counted = true;
|
|
146
|
+
}
|
|
147
|
+
return { count: counted ? { of: "ready", value: total } : null, problems };
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Backlog.md is detected from its file and probed for a runtime, but its
|
|
151
|
+
* dependency model is not something this program has confirmed. Unverified
|
|
152
|
+
* fails closed, so it is reported and never dispatched — §4 would rather show
|
|
153
|
+
* a visible gap than emulate edges nobody else can see.
|
|
154
|
+
*/
|
|
155
|
+
async function detectBacklog(repos, runner) {
|
|
156
|
+
const runtime = await probeVersion(runner, BACKLOG, ["--version"], repos[0]);
|
|
157
|
+
return {
|
|
158
|
+
kind: "backlog-md",
|
|
159
|
+
label: LABELS["backlog-md"],
|
|
160
|
+
repos: [...repos],
|
|
161
|
+
count: null,
|
|
162
|
+
deps: "unverified",
|
|
163
|
+
runtime,
|
|
164
|
+
dispatchable: false,
|
|
165
|
+
problems: [
|
|
166
|
+
runtime.state === "missing"
|
|
167
|
+
? "backlog is not on PATH — the file is here but nothing can read it"
|
|
168
|
+
: "dependency edges are unverified — readable, but not scheduled from",
|
|
169
|
+
],
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* GitHub Issues are counted through `gh`, which is already how pull requests
|
|
174
|
+
* are read, so no new credential is involved. The version gate is separate
|
|
175
|
+
* from the count on purpose: an older `gh` still answers how many issues are
|
|
176
|
+
* open, it just cannot be trusted for the dependency fields that scheduling
|
|
177
|
+
* would need.
|
|
178
|
+
*/
|
|
179
|
+
async function detectIssues(repos, runner) {
|
|
180
|
+
const version = await probeVersion(runner, GH, ["--version"], repos[0]);
|
|
181
|
+
const runtime = gateGhVersion(version);
|
|
182
|
+
const problems = [];
|
|
183
|
+
const withIssues = [];
|
|
184
|
+
let total = 0;
|
|
185
|
+
let counted = false;
|
|
186
|
+
if (runtime.state === "missing") {
|
|
187
|
+
problems.push("gh is not installed — GitHub Issues were not read");
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
for (const repo of repos) {
|
|
191
|
+
const result = await runner(GH, ["issue", "list", "--state", "open", "--limit", "100", "--json", "number"], { cwd: repo, timeoutMs: NETWORK_TIMEOUT_MS });
|
|
192
|
+
if (result.code !== 0) {
|
|
193
|
+
// Only one failure is ordinary: a repository that is not on GitHub, on
|
|
194
|
+
// a machine full of local-only work. Everything else — expired auth, a
|
|
195
|
+
// rate limit, a transport error — is a repository we failed to read,
|
|
196
|
+
// and reporting that as "no issues here" would be a false negative of
|
|
197
|
+
// exactly the kind this tool exists to prevent.
|
|
198
|
+
if (!isMissingRemote(result.stderr)) {
|
|
199
|
+
problems.push(`${repo}: could not read issues: ${describeFailure(result)}`);
|
|
200
|
+
}
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
const items = countArray(result.stdout);
|
|
204
|
+
if (items === null) {
|
|
205
|
+
problems.push(`${repo}: gh returned something unreadable for issues`);
|
|
206
|
+
continue;
|
|
207
|
+
}
|
|
208
|
+
counted = true;
|
|
209
|
+
if (items > 0) {
|
|
210
|
+
total += items;
|
|
211
|
+
withIssues.push(repo);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return {
|
|
216
|
+
kind: "github-issues",
|
|
217
|
+
label: LABELS["github-issues"],
|
|
218
|
+
repos: withIssues,
|
|
219
|
+
count: counted ? { of: "open", value: total } : null,
|
|
220
|
+
// Issues have native `blocked_by` and sub-issues, but the dependency
|
|
221
|
+
// fields need a newer gh than reading them does — so an old gh means the
|
|
222
|
+
// edges are unconfirmed, not merely inconvenient. Cross-repository
|
|
223
|
+
// semantics stay unverified regardless, and unverified fails closed.
|
|
224
|
+
deps: runtime.state === "ok" ? "native" : "unverified",
|
|
225
|
+
runtime,
|
|
226
|
+
// Never a default, per the ladder's last rung; see chooseBackend.
|
|
227
|
+
dispatchable: false,
|
|
228
|
+
problems,
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* The one `gh` failure that means "this is not a GitHub repository" rather
|
|
233
|
+
* than "we could not read it". Matched on the message because gh returns 1 for
|
|
234
|
+
* everything, so the exit code cannot tell these apart.
|
|
235
|
+
*/
|
|
236
|
+
function isMissingRemote(stderr) {
|
|
237
|
+
const text = stderr.toLowerCase();
|
|
238
|
+
return (text.includes("no git remotes") ||
|
|
239
|
+
text.includes("not a git repository") ||
|
|
240
|
+
text.includes("could not determine base repository") ||
|
|
241
|
+
text.includes("none of the git remotes"));
|
|
242
|
+
}
|
|
243
|
+
/** `gh --version` prints `gh version 2.67.0 (...)`; take the first number triple. */
|
|
244
|
+
function gateGhVersion(runtime) {
|
|
245
|
+
if (runtime.state !== "ok" || runtime.version === null)
|
|
246
|
+
return runtime;
|
|
247
|
+
if (compareVersions(runtime.version, GH_DEPS_MIN_VERSION) >= 0)
|
|
248
|
+
return runtime;
|
|
249
|
+
return { state: "outdated", version: runtime.version, needs: GH_DEPS_MIN_VERSION };
|
|
250
|
+
}
|
|
251
|
+
async function probeVersion(runner, binary, args, cwd) {
|
|
252
|
+
const result = await runner(binary, args, { cwd, timeoutMs: LOCAL_TIMEOUT_MS });
|
|
253
|
+
if (result.notFound)
|
|
254
|
+
return { state: "missing", binary };
|
|
255
|
+
if (result.code !== 0)
|
|
256
|
+
return { state: "unreadable", reason: describeFailure(result) };
|
|
257
|
+
return { state: "ok", version: parseVersion(result.stdout) };
|
|
258
|
+
}
|
|
259
|
+
/** null when no version-shaped token is present — unknown, not zero. */
|
|
260
|
+
export function parseVersion(text) {
|
|
261
|
+
const found = /(\d+)\.(\d+)(?:\.(\d+))?/.exec(text);
|
|
262
|
+
return found === null ? null : `${found[1]}.${found[2]}.${found[3] ?? "0"}`;
|
|
263
|
+
}
|
|
264
|
+
/** Negative, zero, or positive, like every other comparator. */
|
|
265
|
+
export function compareVersions(left, right) {
|
|
266
|
+
const mine = numbersIn(left);
|
|
267
|
+
const theirs = numbersIn(right);
|
|
268
|
+
for (let index = 0; index < Math.max(mine.length, theirs.length); index++) {
|
|
269
|
+
const difference = (mine[index] ?? 0) - (theirs[index] ?? 0);
|
|
270
|
+
if (difference !== 0)
|
|
271
|
+
return difference;
|
|
272
|
+
}
|
|
273
|
+
return 0;
|
|
274
|
+
}
|
|
275
|
+
function numbersIn(version) {
|
|
276
|
+
return version.split(".").map(part => Number.parseInt(part, 10) || 0);
|
|
277
|
+
}
|
|
278
|
+
/** null when the payload is not the array another program promised us. */
|
|
279
|
+
function countArray(json) {
|
|
280
|
+
let parsed;
|
|
281
|
+
try {
|
|
282
|
+
parsed = JSON.parse(json);
|
|
283
|
+
}
|
|
284
|
+
catch {
|
|
285
|
+
return null;
|
|
286
|
+
}
|
|
287
|
+
return Array.isArray(parsed) ? parsed.length : null;
|
|
288
|
+
}
|
|
289
|
+
function describeFailure(result) {
|
|
290
|
+
if (result.timedOut)
|
|
291
|
+
return "timed out";
|
|
292
|
+
const [line = ""] = result.stderr.trim().split("\n");
|
|
293
|
+
return line === "" ? `exit ${result.code}` : line;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* The ladder from §3, as a pure function so the policy can be read and tested
|
|
297
|
+
* without a filesystem.
|
|
298
|
+
*
|
|
299
|
+
* The rung that does the most work is the third: several populated repo-local
|
|
300
|
+
* trackers mean Toolroll stays in discovery until a person says which one.
|
|
301
|
+
* Picking the largest would be inventing authority out of a row count.
|
|
302
|
+
*
|
|
303
|
+
* GitHub Issues is never chosen automatically. It has native edges, but a
|
|
304
|
+
* populated issue tracker is evidence people file issues, not evidence anyone
|
|
305
|
+
* wants an unattended agent closing them — the design requires existing
|
|
306
|
+
* dependency use *and* a confirmed write scope, and neither is established by
|
|
307
|
+
* looking.
|
|
308
|
+
*/
|
|
309
|
+
export function chooseBackend(detections, options = {}) {
|
|
310
|
+
const local = detections.filter(one => one.kind !== "github-issues");
|
|
311
|
+
const populated = local.filter(isPopulated);
|
|
312
|
+
// Rung 1. Nothing persists a grant yet — `BackendGrant` is still ahead of us
|
|
313
|
+
// in M0 — so this is reachable only when a caller supplies one. It is here
|
|
314
|
+
// rather than later because an enrolled backend must outrank detection the
|
|
315
|
+
// moment enrollment exists: an operator who already said which one should
|
|
316
|
+
// never be re-asked because a second tracker appeared in some other repo.
|
|
317
|
+
const enrolled = detections.find(one => one.kind === options.enrolled);
|
|
318
|
+
if (enrolled !== undefined) {
|
|
319
|
+
return {
|
|
320
|
+
action: "recommend",
|
|
321
|
+
kind: enrolled.kind,
|
|
322
|
+
dispatchable: enrolled.dispatchable,
|
|
323
|
+
why: "already enrolled",
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
if (populated.length === 1) {
|
|
327
|
+
const only = populated[0];
|
|
328
|
+
return {
|
|
329
|
+
action: "recommend",
|
|
330
|
+
kind: only.kind,
|
|
331
|
+
dispatchable: only.dispatchable,
|
|
332
|
+
why: only.dispatchable
|
|
333
|
+
? `the only work graph in your repos, and ${runtimeWord(only)}`
|
|
334
|
+
: `the only work graph in your repos, but ${blockedWord(only)}`,
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
if (populated.length > 1) {
|
|
338
|
+
return {
|
|
339
|
+
action: "ambiguous",
|
|
340
|
+
kinds: populated.map(one => one.kind),
|
|
341
|
+
why: "task count is not authority, so nothing is chosen for you",
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
// Rungs 3 and 5. GitHub Issues is deliberately not offered here even when it
|
|
345
|
+
// is the only thing found and full of work. The spec wants existing native
|
|
346
|
+
// dependency use *and* a confirmed write scope, and neither is established
|
|
347
|
+
// by counting issues — people file issues without wanting an agent closing
|
|
348
|
+
// them. Saying so beats falling through in silence, which would read as
|
|
349
|
+
// "nothing found" to someone looking at 112 open issues.
|
|
350
|
+
const issues = detections.find(one => one.kind === "github-issues");
|
|
351
|
+
if (issues !== undefined && isPopulated(issues)) {
|
|
352
|
+
return {
|
|
353
|
+
action: "built-in",
|
|
354
|
+
why: "GitHub Issues is the only tracker here, and is never scheduled from without you saying so; the built-in store is the fallback and is not built yet",
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
return {
|
|
358
|
+
action: "built-in",
|
|
359
|
+
why: "no repo-local tracker found; the built-in store is the fallback and is not built yet",
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* Populated means its data is present, not that we managed to count it. A
|
|
364
|
+
* tracker whose runtime is missing still holds the operator's work, and
|
|
365
|
+
* hiding it because we could not read it would be the silence this tool
|
|
366
|
+
* exists to break.
|
|
367
|
+
*/
|
|
368
|
+
function isPopulated(detection) {
|
|
369
|
+
return detection.repos.length > 0 && (detection.count === null || detection.count.value > 0);
|
|
370
|
+
}
|
|
371
|
+
function runtimeWord(detection) {
|
|
372
|
+
const { runtime } = detection;
|
|
373
|
+
return runtime.state === "ok" && runtime.version !== null
|
|
374
|
+
? `its runtime answers (${runtime.version})`
|
|
375
|
+
: "its runtime answers";
|
|
376
|
+
}
|
|
377
|
+
function blockedWord(detection) {
|
|
378
|
+
if (detection.runtime.state === "missing")
|
|
379
|
+
return `${detection.runtime.binary} is not on PATH`;
|
|
380
|
+
if (detection.deps !== "native")
|
|
381
|
+
return "its dependency edges are unverified";
|
|
382
|
+
return "it is not dispatchable";
|
|
383
|
+
}
|
package/dist/guides.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Binary-served agent guides (arc 5): the binary is the distribution
|
|
3
|
+
* channel. An agent asks the exact version it is driving — `skills list`
|
|
4
|
+
* names these, `skills get <name>` prints one — and the answer is right
|
|
5
|
+
* by construction, because the content ships compiled into the package.
|
|
6
|
+
* No file reads, no network: string constants survive npx, pruning, and
|
|
7
|
+
* every install layout.
|
|
8
|
+
*
|
|
9
|
+
* The `operating` guide is THE shared source for the installed SKILL.md
|
|
10
|
+
* body (skills.ts composes from it), so the installed snapshot and the
|
|
11
|
+
* served guide cannot drift apart within one version.
|
|
12
|
+
*/
|
|
13
|
+
/** Every guide opens with this: the manual defers to the machine. */
|
|
14
|
+
export declare const AUTHORITY_LINE: string;
|
|
15
|
+
export type Guide = {
|
|
16
|
+
readonly name: string;
|
|
17
|
+
readonly title: string;
|
|
18
|
+
readonly oneLiner: string;
|
|
19
|
+
readonly content: string;
|
|
20
|
+
};
|
|
21
|
+
export declare const GUIDES: readonly Guide[];
|
|
22
|
+
export declare function guideNamed(name: string): Guide | null;
|