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
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/** Read-only eligibility, NEVER process-exit evidence or permission to clear a
|
|
2
|
+
* witness. This narrow classifier relies on the installed native builder path:
|
|
3
|
+
* its prepared-candidate handoff is machine-authored, and its actual v1 gate
|
|
4
|
+
* receipt is sealed only after awaited witnessedRunner returned and finished
|
|
5
|
+
* every direct beforeSpawn reservation. The caller must separately authenticate
|
|
6
|
+
* that execution provenance, the current host/boot, and a complete OS census.
|
|
7
|
+
* In particular, an eligible null PID can still hide an escaped descendant. */
|
|
8
|
+
import { createHash } from "node:crypto";
|
|
9
|
+
import { normalizeBootId } from "./boot-identity.js";
|
|
10
|
+
import { scopeApprovedForDispatch } from "./dispatch.js";
|
|
11
|
+
import { readVerifiedArtifact } from "./evidence.js";
|
|
12
|
+
import { ownedProcessCount, runOwnerTag } from "./exec.js";
|
|
13
|
+
import { scopeAuthorityOf } from "./scope.js";
|
|
14
|
+
import { isVerificationReceipt, VERIFICATION_RECEIPT_CAPTURE, verificationEvidence } from "./verification-evidence.js";
|
|
15
|
+
const hash = (value) => createHash("sha256").update(JSON.stringify(value)).digest("hex");
|
|
16
|
+
const instant = (value) => typeof value === "string" && Number.isFinite(Date.parse(value));
|
|
17
|
+
const commit = (value) => typeof value === "string" && /^[a-f0-9]{40}$/.test(value);
|
|
18
|
+
const positive = (value) => Number.isSafeInteger(value) && Number(value) > 0;
|
|
19
|
+
const artifactBinding = (a) => ({ id: a.id, run: a.run, kind: a.kind, key: a.key, sha256: a.sha256,
|
|
20
|
+
bytesOriginal: a.bytesOriginal, bytesStored: a.bytesStored, truncated: a.truncated, redacted: a.redacted,
|
|
21
|
+
capture: a.capture, captureStatus: a.captureStatus, createdAt: a.createdAt });
|
|
22
|
+
function freeze(value) {
|
|
23
|
+
if (value !== null && typeof value === "object") {
|
|
24
|
+
for (const child of Object.values(value))
|
|
25
|
+
freeze(child);
|
|
26
|
+
Object.freeze(value);
|
|
27
|
+
}
|
|
28
|
+
return value;
|
|
29
|
+
}
|
|
30
|
+
// A successful digest is only a saved-state prerequisite. Settlement must separately
|
|
31
|
+
// prove provenance and absence, then recheck this same binding inside its transaction.
|
|
32
|
+
export function preparedCandidateObserverGapEligibility(store, input) {
|
|
33
|
+
const refuse = (reason) => ({ ok: false, reason });
|
|
34
|
+
try {
|
|
35
|
+
// SAVEPOINT supplies a consistent read snapshot, including when a caller
|
|
36
|
+
// already has a transaction. No Store mutator or process probe runs here.
|
|
37
|
+
return store.savepoint(() => {
|
|
38
|
+
const { runId, evidenceRoot, now, host, bootId } = input;
|
|
39
|
+
if (!positive(runId) || !Number.isFinite(now.getTime()) || !host || /[\x00-\x1f\x7f]/.test(host) ||
|
|
40
|
+
bootId === null || normalizeBootId(bootId) !== bootId)
|
|
41
|
+
return refuse("current-host-boot-unavailable");
|
|
42
|
+
const run = store.getRun(runId);
|
|
43
|
+
if (!run || run.role !== "builder" || (run.outcome !== "built" && run.outcome !== "no-change") ||
|
|
44
|
+
!instant(run.startedAt) || !instant(run.finishedAt) || Date.parse(run.finishedAt) < Date.parse(run.startedAt) ||
|
|
45
|
+
Date.parse(run.finishedAt) > now.getTime())
|
|
46
|
+
return refuse("not-terminal-prepared-builder");
|
|
47
|
+
if (run.providerStartedAt !== null || run.sessionId !== null || run.attendedAuthorization != null || run.contestant !== null ||
|
|
48
|
+
!commit(run.baseRevision) || !commit(run.headRevision) || !run.branch || !run.worktree)
|
|
49
|
+
return refuse("provider-or-run-identity-unproven");
|
|
50
|
+
const ref = store.refById(run.taskRef);
|
|
51
|
+
if (!ref?.repo || store.getTask(ref.externalId)?.state !== "done")
|
|
52
|
+
return refuse("task-not-terminal");
|
|
53
|
+
const scope = store.getScope(ref.externalId);
|
|
54
|
+
if (!scope || !commit(scope.candidate) || scope.digest !== run.scopeDigest || scope.approvedDigest !== scope.digest ||
|
|
55
|
+
!instant(scope.approvedAt) || Date.parse(scope.approvedAt) > Date.parse(run.startedAt) ||
|
|
56
|
+
!scope.approvedBy || !scopeAuthorityOf(scope).ok || !store.sealedRouteOf(ref.externalId).ok ||
|
|
57
|
+
!scopeApprovedForDispatch(store, ref.id, now))
|
|
58
|
+
return refuse("prepared-scope-not-current");
|
|
59
|
+
const signerValid = (name) => {
|
|
60
|
+
const signer = store.accountOf(name);
|
|
61
|
+
return signer?.role === "approver" && signer.revokedAt === null && store.accountCanAccess(name, ref.repo);
|
|
62
|
+
};
|
|
63
|
+
if (!signerValid(scope.approvedBy))
|
|
64
|
+
return refuse("scope-signer-not-current");
|
|
65
|
+
const command = store.liveVerifyCommand(ref.repo);
|
|
66
|
+
if (!command || !positive(command.id) || !positive(command.timeoutMs) || !command.command ||
|
|
67
|
+
!instant(command.approvedAt) || Date.parse(command.approvedAt) > Date.parse(run.startedAt) ||
|
|
68
|
+
command.revokedAt !== null || !signerValid(command.approvedBy))
|
|
69
|
+
return refuse("verification-grant-not-current");
|
|
70
|
+
if (store.handle.prepare("SELECT 1 FROM claim WHERE task_ref = ? AND released_at IS NULL AND expires_at >= ? LIMIT 1").get(ref.id, now.toISOString()) ||
|
|
71
|
+
store.activeHolds(ref.id, now).length || store.handle.prepare("SELECT 1 FROM run WHERE task_ref = ? AND (outcome IS NULL OR finished_at IS NULL) LIMIT 1").get(ref.id))
|
|
72
|
+
return refuse("task-still-active-or-held");
|
|
73
|
+
const owned = store.ownedRunsOf(runId);
|
|
74
|
+
const ownedRuns = [];
|
|
75
|
+
for (const id of owned) {
|
|
76
|
+
const one = store.getRun(id);
|
|
77
|
+
if (!one || one.outcome === null || !instant(one.startedAt) || !instant(one.finishedAt) ||
|
|
78
|
+
Date.parse(one.finishedAt) < Date.parse(one.startedAt) || Date.parse(one.finishedAt) > Date.parse(run.finishedAt) ||
|
|
79
|
+
one.providerStartedAt !== null || one.sessionId !== null ||
|
|
80
|
+
store.applicableStopFor(id) !== null || ownedProcessCount(runOwnerTag(store, id)) > 0 ||
|
|
81
|
+
store.heldSessionOf(id)?.endedAt === null)
|
|
82
|
+
return refuse("owned-run-not-settled");
|
|
83
|
+
ownedRuns.push({ id, taskRef: one.taskRef, leaseId: one.leaseId, parentRun: one.parentRun, role: one.role,
|
|
84
|
+
outcome: one.outcome, startedAt: one.startedAt, finishedAt: one.finishedAt, providerStartedAt: one.providerStartedAt, sessionId: one.sessionId });
|
|
85
|
+
}
|
|
86
|
+
const machine = store.proofVerdictFor(runId);
|
|
87
|
+
if (!machine || (machine.machineVerdict ?? machine.verdict) !== "verified" || !instant(machine.decidedAt) ||
|
|
88
|
+
Date.parse(machine.decidedAt) > now.getTime())
|
|
89
|
+
return refuse("machine-verification-unproven");
|
|
90
|
+
const artifacts = store.artifactsFor(runId);
|
|
91
|
+
const receipts = artifacts.filter(isVerificationReceipt);
|
|
92
|
+
const logs = artifacts.filter(a => a.kind === "check-log");
|
|
93
|
+
if (receipts.length !== 1 || receipts[0].capture !== VERIFICATION_RECEIPT_CAPTURE || logs.length !== 1 ||
|
|
94
|
+
receipts[0].captureStatus !== "ok" || logs[0].captureStatus !== "ok")
|
|
95
|
+
return refuse("actual-v1-gate-required");
|
|
96
|
+
const gateArtifact = receipts[0], log = logs[0];
|
|
97
|
+
const gate = verificationEvidence(store, evidenceRoot, runId);
|
|
98
|
+
if (!gate.ok || gate.bytes === null)
|
|
99
|
+
return refuse("verification-evidence-unavailable");
|
|
100
|
+
const receipt = JSON.parse(gate.bytes);
|
|
101
|
+
if (receipt.version !== 1 || receipt.source !== undefined || receipt.reusedFrom !== undefined || receipt.executedHere !== undefined ||
|
|
102
|
+
receipt.result?.configured !== true || receipt.result.ran !== true || receipt.result.exitCode !== 0 ||
|
|
103
|
+
Object.keys(receipt.result).some(key => !["configured", "ran", "exitCode", "setupReplayed"].includes(key)) ||
|
|
104
|
+
(receipt.result.setupReplayed !== undefined && receipt.result.setupReplayed !== true) ||
|
|
105
|
+
!instant(gateArtifact.createdAt) || Date.parse(gateArtifact.createdAt) < Date.parse(run.startedAt) ||
|
|
106
|
+
Date.parse(gateArtifact.createdAt) > Date.parse(machine.decidedAt) ||
|
|
107
|
+
Date.parse(gateArtifact.createdAt) > Date.parse(run.finishedAt))
|
|
108
|
+
return refuse("actual-passing-gate-unproven");
|
|
109
|
+
const handoffs = artifacts.filter(a => a.kind === "handoff");
|
|
110
|
+
if (handoffs.length !== 1)
|
|
111
|
+
return refuse("machine-prepared-handoff-unavailable");
|
|
112
|
+
const artifact = handoffs[0];
|
|
113
|
+
if (artifact.capture !== "machine-authored handoff (exit 0)" || artifact.truncated || artifact.redacted || artifact.captureStatus === "failed")
|
|
114
|
+
return refuse("machine-prepared-handoff-unavailable");
|
|
115
|
+
const saved = readVerifiedArtifact(evidenceRoot, artifact);
|
|
116
|
+
if (!saved.ok)
|
|
117
|
+
return refuse("machine-prepared-handoff-unavailable");
|
|
118
|
+
const handoff = JSON.parse(saved.content.toString("utf8"));
|
|
119
|
+
const conclusion = `Prepared candidate ${scope.candidate} was checked out by the machine; no agent ran. ${run.outcome === "no-change" ? "The branch already matched it." : "The sealed diff spans this task's base to that candidate."}`;
|
|
120
|
+
if (handoff.schema !== 1 || handoff.runId !== runId || handoff.taskId !== ref.externalId || handoff.sessionId !== null ||
|
|
121
|
+
handoff.provider !== run.provider || handoff.branch !== run.branch || handoff.worktree !== run.worktree ||
|
|
122
|
+
handoff.base !== run.baseRevision || handoff.head !== run.headRevision || handoff.outcome !== run.outcome ||
|
|
123
|
+
handoff.committed !== run.committed || handoff.freshness?.currentAsOf !== run.headRevision ||
|
|
124
|
+
handoff.conclusion !== conclusion || run.handoff !== conclusion ||
|
|
125
|
+
!instant(artifact.createdAt) || Date.parse(artifact.createdAt) < Date.parse(run.startedAt) ||
|
|
126
|
+
Date.parse(artifact.createdAt) > Date.parse(gateArtifact.createdAt))
|
|
127
|
+
return refuse("machine-prepared-handoff-mismatch");
|
|
128
|
+
const witnesses = [];
|
|
129
|
+
for (const id of owned) {
|
|
130
|
+
for (const row of store.handle.prepare("SELECT id, run, pid, host, process_group, observed_at, exited_at, boot_id, containment, container, container_identity, container_empty_at FROM run_process WHERE run = ? ORDER BY id").all(id)) {
|
|
131
|
+
if (!positive(row.id) || row.run !== id || (row.pid !== null && !positive(row.pid)) || typeof row.host !== "string" ||
|
|
132
|
+
(row.process_group !== 0 && row.process_group !== 1) || !instant(row.observed_at) ||
|
|
133
|
+
Date.parse(row.observed_at) < Date.parse(run.startedAt) || Date.parse(row.observed_at) > Date.parse(run.finishedAt) ||
|
|
134
|
+
(row.exited_at !== null && (!instant(row.exited_at) || Date.parse(row.exited_at) < Date.parse(row.observed_at) || Date.parse(row.exited_at) > now.getTime())) ||
|
|
135
|
+
(row.boot_id !== null && (typeof row.boot_id !== "string" || normalizeBootId(row.boot_id) !== row.boot_id)))
|
|
136
|
+
return refuse("malformed-process-witness");
|
|
137
|
+
// This classifier is deliberately ordinary-process-only. Even a
|
|
138
|
+
// apparently empty native object needs its separate containment road.
|
|
139
|
+
if (row.containment !== null || row.container !== null || row.container_identity !== null || row.container_empty_at !== null)
|
|
140
|
+
return refuse("native-containment-outside-scope");
|
|
141
|
+
if (row.pid !== null && row.exited_at === null)
|
|
142
|
+
return refuse("known-process-exit-unproven");
|
|
143
|
+
if (row.pid === null && row.exited_at === null && (id !== runId || row.host !== host || row.boot_id !== bootId ||
|
|
144
|
+
Date.parse(row.observed_at) > Date.parse(gateArtifact.createdAt)))
|
|
145
|
+
return refuse("unknown-witness-not-bound-to-gate");
|
|
146
|
+
witnesses.push(row);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
const unknownWitnessIds = witnesses.filter(row => row.pid === null && row.exited_at === null).map(row => row.id);
|
|
150
|
+
if (!unknownWitnessIds.length)
|
|
151
|
+
return refuse("no-unresolved-null-pid-witness");
|
|
152
|
+
if (!witnesses.some(row => row.run === runId && row.pid !== null && row.exited_at !== null))
|
|
153
|
+
return refuse("known-gate-process-witness-missing");
|
|
154
|
+
const binding = { version: 1, kind: "prepared-candidate-observer-gap-eligibility",
|
|
155
|
+
host, bootId, run: { id: runId, taskRef: ref.id, taskId: ref.externalId, repo: ref.repo, leaseId: run.leaseId,
|
|
156
|
+
role: run.role, outcome: run.outcome, committed: run.committed, startedAt: run.startedAt, finishedAt: run.finishedAt,
|
|
157
|
+
branch: run.branch, worktree: run.worktree, base: run.baseRevision, head: run.headRevision },
|
|
158
|
+
scope: { candidate: scope.candidate, digest: scope.digest, approvedAt: scope.approvedAt, approvedBy: scope.approvedBy,
|
|
159
|
+
approvalBasis: scope.approvalBasis ?? "password", modeDigest: scope.modeDigest ?? null },
|
|
160
|
+
command, machine, gateDigest: gate.digest, gate: artifactBinding(gateArtifact), log: artifactBinding(log),
|
|
161
|
+
handoff: artifactBinding(artifact), ownedRuns, unknownWitnessIds, witnesses };
|
|
162
|
+
return freeze({ ok: true, digest: hash(binding), binding,
|
|
163
|
+
requires: "separate-authenticated-spawn-provenance-and-complete-os-census" });
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
// No private paths, artifact bodies, command output or raw database errors.
|
|
168
|
+
return refuse("saved-eligibility-evidence-unreadable");
|
|
169
|
+
}
|
|
170
|
+
}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
export type PreparedDarwinProcessCensus = {
|
|
2
|
+
sourcePath: string;
|
|
3
|
+
executablePath: string;
|
|
4
|
+
sourceSha256: string;
|
|
5
|
+
executableSha256: string;
|
|
6
|
+
};
|
|
7
|
+
export type DarwinProcessIdentity = {
|
|
8
|
+
pid: number;
|
|
9
|
+
ppid: number | null;
|
|
10
|
+
uid: number | null;
|
|
11
|
+
birthMs: number | null;
|
|
12
|
+
uniqueId: string | null;
|
|
13
|
+
parentUniqueId: string | null;
|
|
14
|
+
traced: boolean | null;
|
|
15
|
+
executable: string | null;
|
|
16
|
+
originalParentVersion: number | null;
|
|
17
|
+
pidVersion?: number;
|
|
18
|
+
};
|
|
19
|
+
export type DarwinManagedService = {
|
|
20
|
+
domain: string;
|
|
21
|
+
label: string;
|
|
22
|
+
pid: number;
|
|
23
|
+
uniqueId: string;
|
|
24
|
+
beforeUniqueId: string;
|
|
25
|
+
afterUniqueId: string;
|
|
26
|
+
identityBound: boolean;
|
|
27
|
+
};
|
|
28
|
+
export type DarwinPidDomain = {
|
|
29
|
+
pid: number;
|
|
30
|
+
domain: string;
|
|
31
|
+
readable: boolean;
|
|
32
|
+
identityBound: boolean;
|
|
33
|
+
uniqueId: string | null;
|
|
34
|
+
type: string | null;
|
|
35
|
+
handle: number | null;
|
|
36
|
+
originator: string | null;
|
|
37
|
+
creatorPid: number | null;
|
|
38
|
+
};
|
|
39
|
+
export type DarwinProcessRecoverySnapshot = {
|
|
40
|
+
schema: 1;
|
|
41
|
+
host: string;
|
|
42
|
+
bootId: string | null;
|
|
43
|
+
osRelease: string;
|
|
44
|
+
startedAt: string;
|
|
45
|
+
finishedAt: string;
|
|
46
|
+
elevation: "none" | "sudo-n";
|
|
47
|
+
complete: boolean;
|
|
48
|
+
stable: boolean;
|
|
49
|
+
processes: DarwinProcessIdentity[];
|
|
50
|
+
managedServices: DarwinManagedService[];
|
|
51
|
+
collectorPids: number[];
|
|
52
|
+
domainFailures: {
|
|
53
|
+
domain: string;
|
|
54
|
+
reason: string;
|
|
55
|
+
}[];
|
|
56
|
+
identityChanges: number[];
|
|
57
|
+
errors: string[];
|
|
58
|
+
nativeSourceSha256: string;
|
|
59
|
+
nativeExecutableSha256: string;
|
|
60
|
+
pidDomains: DarwinPidDomain[];
|
|
61
|
+
};
|
|
62
|
+
type NativeSnapshot = {
|
|
63
|
+
schema: 1;
|
|
64
|
+
bootId: string | null;
|
|
65
|
+
collectorPid: number;
|
|
66
|
+
complete: boolean;
|
|
67
|
+
processes: DarwinProcessIdentity[];
|
|
68
|
+
errors: string[];
|
|
69
|
+
};
|
|
70
|
+
/** Facts only. Public KERN_PROC_ALL supplies birth/UID/trace metadata without
|
|
71
|
+
* reading argv or environments. XNU's flavor 17 supplies 64-bit identities:
|
|
72
|
+
* https://github.com/apple-oss-distributions/xnu/blob/main/bsd/sys/proc_info_private.h
|
|
73
|
+
* p_puniqueid can change on orphan exec; original-parent version is diagnostic
|
|
74
|
+
* only (32-bit wrap is possible). No recovery authority lives in this helper. */
|
|
75
|
+
export declare const DARWIN_PROCESS_CENSUS_SOURCE: string;
|
|
76
|
+
/** Compilation is explicit, local, and separate from read-only collection. */
|
|
77
|
+
export declare function prepareDarwinProcessCensus(directory: string): PreparedDarwinProcessCensus;
|
|
78
|
+
/** Strict parser also strips every field not in the facts contract. */
|
|
79
|
+
export declare function parseDarwinNativeSnapshot(text: string): NativeSnapshot;
|
|
80
|
+
/** PID reuse, orphan exec, tracing, UID and birth changes all invalidate a seal. */
|
|
81
|
+
export declare function changedDarwinProcessIdentities(before: DarwinProcessIdentity[], after: DarwinProcessIdentity[]): number[];
|
|
82
|
+
/** Parse only the launchd domain's direct service table; never return raw print
|
|
83
|
+
* output, environment, arguments or nested service-like text. */
|
|
84
|
+
export declare function parseDarwinLaunchdServices(output: string): {
|
|
85
|
+
pid: number;
|
|
86
|
+
label: string;
|
|
87
|
+
}[];
|
|
88
|
+
export declare function parseDarwinPidDomain(output: string): Pick<DarwinPidDomain, "type" | "handle" | "originator" | "creatorPid">;
|
|
89
|
+
/** Does not write a recovery receipt, clear custody, signal task processes, or
|
|
90
|
+
* infer that an unreadable service/domain is safe. sudo-n is explicit and can
|
|
91
|
+
* only fail closed; this function never requests or reads a password. */
|
|
92
|
+
export declare function collectDarwinProcessRecoverySnapshot(args: {
|
|
93
|
+
native: PreparedDarwinProcessCensus;
|
|
94
|
+
elevation?: "none" | "sudo-n";
|
|
95
|
+
boundary: string;
|
|
96
|
+
maxAttempts?: number;
|
|
97
|
+
}): Promise<DarwinProcessRecoverySnapshot>;
|
|
98
|
+
export type DarwinCoalitionCounters = {
|
|
99
|
+
tasksStarted: string;
|
|
100
|
+
tasksExited: string;
|
|
101
|
+
};
|
|
102
|
+
export type DarwinCoalitionProcessIdentity = DarwinProcessIdentity & {
|
|
103
|
+
resourceCoalitionId: string;
|
|
104
|
+
};
|
|
105
|
+
export type DarwinCoalitionNativeSnapshot = Omit<NativeSnapshot, "processes"> & {
|
|
106
|
+
resourceCoalitionId: string;
|
|
107
|
+
processes: DarwinCoalitionProcessIdentity[];
|
|
108
|
+
anchorPids: number[];
|
|
109
|
+
anchors: DarwinCoalitionProcessIdentity[];
|
|
110
|
+
counterBefore: DarwinCoalitionCounters | null;
|
|
111
|
+
counterAfter: DarwinCoalitionCounters | null;
|
|
112
|
+
kernelTableRead: boolean;
|
|
113
|
+
unreadableMembershipCount: number;
|
|
114
|
+
};
|
|
115
|
+
export type DarwinCoalitionRecoverySnapshot = {
|
|
116
|
+
schema: 1;
|
|
117
|
+
host: string;
|
|
118
|
+
bootId: string | null;
|
|
119
|
+
osRelease: string;
|
|
120
|
+
startedAt: string;
|
|
121
|
+
finishedAt: string;
|
|
122
|
+
resourceCoalitionId: string;
|
|
123
|
+
complete: boolean;
|
|
124
|
+
stable: boolean;
|
|
125
|
+
anchorPids: number[];
|
|
126
|
+
anchors: DarwinCoalitionProcessIdentity[];
|
|
127
|
+
anchorIdentityChanges: number[];
|
|
128
|
+
processes: DarwinCoalitionProcessIdentity[];
|
|
129
|
+
counterBefore: DarwinCoalitionCounters | null;
|
|
130
|
+
counterAfter: DarwinCoalitionCounters | null;
|
|
131
|
+
countersStable: boolean;
|
|
132
|
+
kernelTableRead: boolean;
|
|
133
|
+
unreadableMembershipCount: number;
|
|
134
|
+
identityChanges: number[];
|
|
135
|
+
errors: string[];
|
|
136
|
+
collector: {
|
|
137
|
+
pid: number;
|
|
138
|
+
uniqueId: string;
|
|
139
|
+
exited: true;
|
|
140
|
+
} | null;
|
|
141
|
+
nativeSourceSha256: string;
|
|
142
|
+
nativeExecutableSha256: string;
|
|
143
|
+
};
|
|
144
|
+
export declare const prepareDarwinCoalitionCensus: typeof prepareDarwinProcessCensus;
|
|
145
|
+
/** Counts corroborate membership; they cannot classify unreadable processes.
|
|
146
|
+
* Every non-zombie table row must have a readable coalition or fresh ESRCH.
|
|
147
|
+
* Fork adopts a coalition before publishing the child PID, then makes it
|
|
148
|
+
* runnable. An in-construction child therefore also requires a live producer;
|
|
149
|
+
* separate historical provenance and absence of owned producers are mandatory.
|
|
150
|
+
* Exec shadows share a PID; changed task counters still invalidate the seal. */
|
|
151
|
+
export declare function parseDarwinCoalitionNativeSnapshot(text: string): DarwinCoalitionNativeSnapshot;
|
|
152
|
+
/** Validates the two seals without trusting a numeric PID intersection. Exported
|
|
153
|
+
* so the same malformed/racing native response receives deterministic checks. */
|
|
154
|
+
export declare function compareDarwinCoalitionSnapshots(before: DarwinCoalitionNativeSnapshot, after: DarwinCoalitionNativeSnapshot): {
|
|
155
|
+
complete: boolean;
|
|
156
|
+
stable: boolean;
|
|
157
|
+
countersStable: boolean;
|
|
158
|
+
identityChanges: number[];
|
|
159
|
+
anchorIdentityChanges: number[];
|
|
160
|
+
errors: string[];
|
|
161
|
+
};
|
|
162
|
+
/** Facts-only same-coalition census; this does not establish that any historical
|
|
163
|
+
* run inherited this coalition or lacked privileged/delegated spawn authority.
|
|
164
|
+
* Unlike the full-host reader, no launchctl child is spawned between seals.
|
|
165
|
+
* Native task counters include fork AND exec, so transient exec copies refuse. */
|
|
166
|
+
export declare function collectDarwinCoalitionSnapshot(args: {
|
|
167
|
+
native: PreparedDarwinProcessCensus;
|
|
168
|
+
resourceCoalitionId: string;
|
|
169
|
+
maxAttempts?: number;
|
|
170
|
+
anchorPids?: number[];
|
|
171
|
+
}): Promise<DarwinCoalitionRecoverySnapshot>;
|
|
172
|
+
export {};
|