@skrr-ai/cli 0.1.109 → 0.1.111
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/bin/run.js +15 -1
- package/dist/base-command.d.ts +44 -1
- package/dist/base-command.js +194 -33
- package/dist/commands/actions/list.js +2 -1
- package/dist/commands/agenda/trigger/create.js +1 -1
- package/dist/commands/agenda/trigger/list.js +2 -1
- package/dist/commands/agent-groups/list.js +2 -1
- package/dist/commands/agents/actions/list.js +2 -1
- package/dist/commands/agents/always-on/status.js +5 -0
- package/dist/commands/agents/chat.js +4 -1
- package/dist/commands/agents/duplicate.js +4 -0
- package/dist/commands/agents/eval/list.js +2 -1
- package/dist/commands/agents/files/list.js +2 -1
- package/dist/commands/agents/folders/list.js +2 -1
- package/dist/commands/agents/goals/list.js +2 -1
- package/dist/commands/agents/intuitions/list.js +8 -5
- package/dist/commands/agents/list.d.ts +12 -0
- package/dist/commands/agents/list.js +45 -8
- package/dist/commands/agents/releases/known-issues/list.js +2 -1
- package/dist/commands/agents/releases/list.js +5 -1
- package/dist/commands/agents/releases/trusted-publishers/list.js +2 -1
- package/dist/commands/agents/roles/list.js +2 -1
- package/dist/commands/agents/skills/list.js +2 -1
- package/dist/commands/agents/todos/list.js +2 -1
- package/dist/commands/agents/triggers/create.js +1 -1
- package/dist/commands/agents/triggers/list.js +2 -1
- package/dist/commands/agents/triggers/update.js +1 -1
- package/dist/commands/agents/update.d.ts +11 -0
- package/dist/commands/agents/update.js +58 -2
- package/dist/commands/api-keys/list.js +2 -1
- package/dist/commands/apps/channel.d.ts +20 -0
- package/dist/commands/apps/channel.js +64 -0
- package/dist/commands/apps/check-draft.d.ts +12 -0
- package/dist/commands/apps/check-draft.js +41 -0
- package/dist/commands/apps/check.d.ts +42 -0
- package/dist/commands/apps/check.js +91 -0
- package/dist/commands/apps/create.d.ts +15 -0
- package/dist/commands/apps/create.js +59 -0
- package/dist/commands/apps/data/put.d.ts +18 -0
- package/dist/commands/apps/data/put.js +72 -0
- package/dist/commands/apps/data/query.d.ts +20 -0
- package/dist/commands/apps/data/query.js +88 -0
- package/dist/commands/apps/disclosure.d.ts +16 -0
- package/dist/commands/apps/disclosure.js +71 -0
- package/dist/commands/apps/file/cat.d.ts +15 -0
- package/dist/commands/apps/file/cat.js +50 -0
- package/dist/commands/apps/file/ls.d.ts +13 -0
- package/dist/commands/apps/file/ls.js +47 -0
- package/dist/commands/apps/file/mv.d.ts +15 -0
- package/dist/commands/apps/file/mv.js +49 -0
- package/dist/commands/apps/file/rm.d.ts +15 -0
- package/dist/commands/apps/file/rm.js +53 -0
- package/dist/commands/apps/file/write.d.ts +17 -0
- package/dist/commands/apps/file/write.js +81 -0
- package/dist/commands/apps/install.d.ts +19 -0
- package/dist/commands/apps/install.js +136 -0
- package/dist/commands/apps/installations/list.d.ts +11 -0
- package/dist/commands/apps/installations/list.js +49 -0
- package/dist/commands/apps/installations/show.d.ts +12 -0
- package/dist/commands/apps/installations/show.js +61 -0
- package/dist/commands/apps/layout/set.d.ts +11 -0
- package/dist/commands/apps/layout/set.js +125 -0
- package/dist/commands/apps/layout/show.d.ts +9 -0
- package/dist/commands/apps/layout/show.js +33 -0
- package/dist/commands/apps/list.d.ts +10 -0
- package/dist/commands/apps/list.js +45 -0
- package/dist/commands/apps/logs.d.ts +13 -0
- package/dist/commands/apps/logs.js +55 -0
- package/dist/commands/apps/preview.d.ts +12 -0
- package/dist/commands/apps/preview.js +39 -0
- package/dist/commands/apps/publish/propose.d.ts +14 -0
- package/dist/commands/apps/publish/propose.js +45 -0
- package/dist/commands/apps/pull.d.ts +14 -0
- package/dist/commands/apps/pull.js +56 -0
- package/dist/commands/apps/push.d.ts +15 -0
- package/dist/commands/apps/push.js +75 -0
- package/dist/commands/apps/reconsent.d.ts +13 -0
- package/dist/commands/apps/reconsent.js +67 -0
- package/dist/commands/apps/report.d.ts +20 -0
- package/dist/commands/apps/report.js +63 -0
- package/dist/commands/apps/resume.d.ts +12 -0
- package/dist/commands/apps/resume.js +36 -0
- package/dist/commands/apps/settings/set.d.ts +13 -0
- package/dist/commands/apps/settings/set.js +54 -0
- package/dist/commands/apps/settings/show.d.ts +11 -0
- package/dist/commands/apps/settings/show.js +31 -0
- package/dist/commands/apps/show.d.ts +12 -0
- package/dist/commands/apps/show.js +49 -0
- package/dist/commands/apps/suspend.d.ts +12 -0
- package/dist/commands/apps/suspend.js +35 -0
- package/dist/commands/apps/uninstall.d.ts +13 -0
- package/dist/commands/apps/uninstall.js +43 -0
- package/dist/commands/apps/upgrade.d.ts +14 -0
- package/dist/commands/apps/upgrade.js +49 -0
- package/dist/commands/apps/version/create.d.ts +14 -0
- package/dist/commands/apps/version/create.js +53 -0
- package/dist/commands/apps/version/show.d.ts +12 -0
- package/dist/commands/apps/version/show.js +39 -0
- package/dist/commands/apps/versions.d.ts +12 -0
- package/dist/commands/apps/versions.js +40 -0
- package/dist/commands/apps/webhooks/list.d.ts +12 -0
- package/dist/commands/apps/webhooks/list.js +47 -0
- package/dist/commands/characters/list.js +2 -1
- package/dist/commands/chats/files/list.js +2 -1
- package/dist/commands/chats/folders/list.js +2 -1
- package/dist/commands/chats/list.js +2 -1
- package/dist/commands/chats/spaces/list.js +2 -1
- package/dist/commands/chats/widgets/list.js +2 -1
- package/dist/commands/code/jobs/list.js +4 -1
- package/dist/commands/commerce/incidents/list.js +2 -1
- package/dist/commands/commitments/accounting.js +3 -0
- package/dist/commands/commitments/action-proposals.d.ts +8 -0
- package/dist/commands/commitments/action-proposals.js +17 -2
- package/dist/commands/commitments/cost.d.ts +11 -0
- package/dist/commands/commitments/cost.js +25 -0
- package/dist/commands/commitments/create.js +6 -1
- package/dist/commands/commitments/endpoints/list.js +2 -1
- package/dist/commands/commitments/links/list.js +2 -1
- package/dist/commands/commitments/list.js +2 -1
- package/dist/commands/commitments/liveness.d.ts +30 -0
- package/dist/commands/commitments/liveness.js +22 -5
- package/dist/commands/commitments/pack/list.js +2 -1
- package/dist/commands/commitments/preflight.js +6 -2
- package/dist/commands/commitments/update.js +10 -1
- package/dist/commands/compass/list.js +2 -1
- package/dist/commands/context.js +7 -1
- package/dist/commands/convos/list.js +3 -2
- package/dist/commands/daemon/install.js +17 -1
- package/dist/commands/daemon/login.js +14 -0
- package/dist/commands/dm/list.js +2 -1
- package/dist/commands/dm/work.d.ts +19 -0
- package/dist/commands/dm/work.js +54 -0
- package/dist/commands/feeds/list.js +2 -1
- package/dist/commands/followups/list.js +2 -1
- package/dist/commands/followups/plans/cancel.d.ts +13 -0
- package/dist/commands/followups/plans/cancel.js +26 -0
- package/dist/commands/followups/plans/create.d.ts +11 -0
- package/dist/commands/followups/plans/create.js +35 -0
- package/dist/commands/followups/plans/list.d.ts +13 -0
- package/dist/commands/followups/plans/list.js +50 -0
- package/dist/commands/followups/plans/observability.d.ts +11 -0
- package/dist/commands/followups/plans/observability.js +46 -0
- package/dist/commands/followups/plans/revise.d.ts +13 -0
- package/dist/commands/followups/plans/revise.js +35 -0
- package/dist/commands/followups/plans/show.d.ts +11 -0
- package/dist/commands/followups/plans/show.js +32 -0
- package/dist/commands/goals/key-results/list.js +2 -1
- package/dist/commands/goals/labels/list.js +3 -2
- package/dist/commands/goals/list.js +3 -2
- package/dist/commands/grants/list.js +2 -1
- package/dist/commands/harnesses/grants/list.js +2 -1
- package/dist/commands/harnesses/leases/list.js +2 -1
- package/dist/commands/harnesses/list.js +10 -1
- package/dist/commands/harnesses/prune.d.ts +26 -0
- package/dist/commands/harnesses/prune.js +172 -0
- package/dist/commands/ingress/list.js +2 -1
- package/dist/commands/initiatives/list.js +2 -1
- package/dist/commands/instruction-blocks/list.js +2 -1
- package/dist/commands/instructions/list.js +2 -1
- package/dist/commands/integrations/connections/list.js +2 -1
- package/dist/commands/integrations/tools/list.js +2 -1
- package/dist/commands/labels/list.js +3 -2
- package/dist/commands/learning/adapters.d.ts +16 -0
- package/dist/commands/learning/adapters.js +44 -0
- package/dist/commands/login.js +11 -0
- package/dist/commands/machines/dedicated/list.js +2 -1
- package/dist/commands/machines/hosted/list.js +2 -1
- package/dist/commands/machines/list.js +2 -1
- package/dist/commands/machines/show.js +5 -2
- package/dist/commands/measures/list.js +2 -1
- package/dist/commands/memory/list.js +2 -1
- package/dist/commands/memory/proposals/list.js +2 -1
- package/dist/commands/memory/stores/list.js +2 -1
- package/dist/commands/memory/topics/list.js +2 -1
- package/dist/commands/memory/versions/list.js +2 -1
- package/dist/commands/messages/list.js +2 -1
- package/dist/commands/northstars/intents/list.js +2 -1
- package/dist/commands/northstars/list.js +2 -1
- package/dist/commands/northstars/recommendations/list.js +2 -1
- package/dist/commands/outbox/list.js +2 -1
- package/dist/commands/profiles/list.js +2 -1
- package/dist/commands/projects/docs/list.js +8 -1
- package/dist/commands/projects/updates/list.js +2 -1
- package/dist/commands/proposals/list.js +2 -1
- package/dist/commands/requests/comments/list.js +2 -1
- package/dist/commands/requests/list.js +2 -1
- package/dist/commands/shares/list.js +2 -1
- package/dist/commands/shortcuts/list.js +2 -1
- package/dist/commands/signals/monitors/list.js +2 -1
- package/dist/commands/signals/schemas/list.js +2 -1
- package/dist/commands/signals/sources/list.js +2 -1
- package/dist/commands/space-directory-views/list.js +2 -1
- package/dist/commands/spaces/actions/list.js +4 -3
- package/dist/commands/spaces/briefs/list.js +2 -1
- package/dist/commands/spaces/cycles/list.js +2 -1
- package/dist/commands/spaces/files/folders/list.js +2 -1
- package/dist/commands/spaces/files/list.js +3 -2
- package/dist/commands/spaces/heartbeats/list.js +3 -2
- package/dist/commands/spaces/labels/list.js +3 -2
- package/dist/commands/spaces/list.d.ts +3 -18
- package/dist/commands/spaces/list.js +28 -35
- package/dist/commands/spaces/live/cards/list.js +2 -1
- package/dist/commands/spaces/members/list.d.ts +1 -0
- package/dist/commands/spaces/members/list.js +4 -1
- package/dist/commands/spaces/show.js +2 -2
- package/dist/commands/spaces/skills/list.js +6 -2
- package/dist/commands/spaces/states/list.js +2 -1
- package/dist/commands/spaces/views/list.js +2 -1
- package/dist/commands/spaces/widgets/list.js +3 -2
- package/dist/commands/spaces/workflow-templates/list.js +2 -1
- package/dist/commands/spaces/workflows/fixtures/list.js +2 -1
- package/dist/commands/spaces/workflows/list.js +3 -2
- package/dist/commands/spaces/workflows/proposals/list.js +2 -1
- package/dist/commands/spaces/workflows/start.js +3 -1
- package/dist/commands/spaces/workflows/triggers/list.js +2 -1
- package/dist/commands/spaces/workflows/validate.js +12 -2
- package/dist/commands/store/acquisitions/list.js +2 -1
- package/dist/commands/store/admissions/list.js +17 -1
- package/dist/commands/store/advisories/list.js +2 -1
- package/dist/commands/store/follows/list.js +2 -1
- package/dist/commands/store/publishers/domains/list.js +2 -1
- package/dist/commands/store/reports/list.js +2 -1
- package/dist/commands/subscriptions/list.js +2 -1
- package/dist/commands/tasks/actionability.js +7 -30
- package/dist/commands/tasks/activity.js +14 -8
- package/dist/commands/tasks/approvals/list.js +2 -1
- package/dist/commands/tasks/assign.d.ts +1 -0
- package/dist/commands/tasks/assign.js +43 -7
- package/dist/commands/tasks/attachments/list.js +2 -1
- package/dist/commands/tasks/chat/send.js +34 -0
- package/dist/commands/tasks/comments/add.js +6 -1
- package/dist/commands/tasks/comments/list.js +2 -1
- package/dist/commands/tasks/complete.js +26 -2
- package/dist/commands/tasks/continue.d.ts +18 -0
- package/dist/commands/tasks/continue.js +54 -0
- package/dist/commands/tasks/create-tree.d.ts +5 -0
- package/dist/commands/tasks/create-tree.js +399 -219
- package/dist/commands/tasks/create.d.ts +1 -0
- package/dist/commands/tasks/create.js +63 -11
- package/dist/commands/tasks/deliverable/add.js +10 -3
- package/dist/commands/tasks/deliverable/list.js +2 -1
- package/dist/commands/tasks/events/list.js +2 -1
- package/dist/commands/tasks/execution-state.d.ts +12 -0
- package/dist/commands/tasks/execution-state.js +28 -0
- package/dist/commands/tasks/expectations/assess.js +40 -5
- package/dist/commands/tasks/guide.d.ts +10 -0
- package/dist/commands/tasks/guide.js +20 -0
- package/dist/commands/tasks/labels/list.js +2 -1
- package/dist/commands/tasks/list.d.ts +19 -0
- package/dist/commands/tasks/list.js +103 -6
- package/dist/commands/tasks/move.js +10 -2
- package/dist/commands/tasks/preflight.d.ts +14 -0
- package/dist/commands/tasks/preflight.js +77 -0
- package/dist/commands/tasks/rearm-recurrence.js +22 -3
- package/dist/commands/tasks/resource/list.js +2 -1
- package/dist/commands/tasks/result/submit.js +10 -1
- package/dist/commands/tasks/review.js +6 -1
- package/dist/commands/tasks/revisions.d.ts +2 -0
- package/dist/commands/tasks/revisions.js +8 -1
- package/dist/commands/tasks/show.d.ts +8 -0
- package/dist/commands/tasks/show.js +81 -43
- package/dist/commands/tasks/start.d.ts +1 -0
- package/dist/commands/tasks/start.js +35 -0
- package/dist/commands/tasks/templates/list.js +2 -1
- package/dist/commands/tasks/timeline.d.ts +5 -0
- package/dist/commands/tasks/timeline.js +9 -1
- package/dist/commands/tasks/unschedule.js +5 -1
- package/dist/commands/tasks/update.d.ts +1 -0
- package/dist/commands/tasks/update.js +36 -3
- package/dist/commands/tasks/updates/add.js +6 -1
- package/dist/commands/tasks/updates/list.js +2 -1
- package/dist/commands/tasks/upsert.d.ts +1 -0
- package/dist/commands/tasks/upsert.js +8 -1
- package/dist/commands/token/list.js +2 -1
- package/dist/commands/tokens/list.js +2 -1
- package/dist/commands/tones/list.js +4 -2
- package/dist/commands/triggers/audit.js +12 -3
- package/dist/commands/triggers/create.js +1 -1
- package/dist/commands/triggers/fire-detail.d.ts +7 -0
- package/dist/commands/triggers/fire-detail.js +30 -12
- package/dist/commands/triggers/fire.js +13 -3
- package/dist/commands/triggers/list.js +2 -1
- package/dist/commands/triggers/parse-intent.js +1 -1
- package/dist/commands/triggers/update.js +1 -1
- package/dist/commands/views/list.js +2 -1
- package/dist/commands/webhooks/list.js +2 -1
- package/dist/commands/whoami.js +1 -1
- package/dist/commands/widgets/list.js +2 -1
- package/dist/commands/widgets/save-as-app.d.ts +13 -0
- package/dist/commands/widgets/save-as-app.js +65 -0
- package/dist/commands/work-views/list.js +2 -1
- package/dist/commands/worklog/list.js +2 -1
- package/dist/commands/workspaces/grants.js +1 -4
- package/dist/commands/workspaces/list.js +3 -2
- package/dist/commands/workspaces/members.d.ts +1 -0
- package/dist/commands/workspaces/members.js +10 -7
- package/dist/generated/managed-instruction-guides.json +2 -2
- package/dist/help.js +7 -0
- package/dist/lib/agent-proactive-baseline.d.ts +9 -0
- package/dist/lib/agent-proactive-baseline.js +44 -0
- package/dist/lib/agentic-stream.d.ts +4 -1
- package/dist/lib/agentic-stream.js +29 -4
- package/dist/lib/appData.d.ts +75 -0
- package/dist/lib/appData.js +274 -0
- package/dist/lib/appInstallations.d.ts +117 -0
- package/dist/lib/appInstallations.js +960 -0
- package/dist/lib/appSettings.d.ts +3 -0
- package/dist/lib/appSettings.js +71 -0
- package/dist/lib/appWebhooks.d.ts +7 -0
- package/dist/lib/appWebhooks.js +59 -0
- package/dist/lib/apps-command.d.ts +44 -0
- package/dist/lib/apps-command.js +164 -0
- package/dist/lib/apps.d.ts +45 -0
- package/dist/lib/apps.js +148 -0
- package/dist/lib/appsCheck.d.ts +12 -0
- package/dist/lib/appsCheck.js +173 -0
- package/dist/lib/appsFs.d.ts +58 -0
- package/dist/lib/appsFs.js +384 -0
- package/dist/lib/auth-failure.d.ts +20 -0
- package/dist/lib/auth-failure.js +40 -3
- package/dist/lib/cli-installers.d.ts +9 -2
- package/dist/lib/command-miss.js +107 -0
- package/dist/lib/commitment-loop-status.js +25 -3
- package/dist/lib/commitment-product.js +5 -2
- package/dist/lib/commitments.d.ts +45 -3
- package/dist/lib/commitments.js +139 -41
- package/dist/lib/compasses.d.ts +4 -0
- package/dist/lib/compasses.js +11 -0
- package/dist/lib/daemon-machine-identity-copy.d.ts +14 -0
- package/dist/lib/daemon-machine-identity-copy.js +27 -0
- package/dist/lib/daemon-machine-identity.d.ts +27 -0
- package/dist/lib/daemon-machine-identity.js +61 -0
- package/dist/lib/daemon-setup.js +7 -7
- package/dist/lib/daemonHandoff.d.ts +19 -1
- package/dist/lib/daemonHandoff.js +62 -2
- package/dist/lib/dedicated-ssh.d.ts +2 -0
- package/dist/lib/dedicated-ssh.js +98 -28
- package/dist/lib/harnesses.d.ts +71 -0
- package/dist/lib/harnesses.js +70 -0
- package/dist/lib/json-output.d.ts +33 -0
- package/dist/lib/json-output.js +37 -0
- package/dist/lib/list-output.d.ts +9 -4
- package/dist/lib/list-output.js +38 -9
- package/dist/lib/lookbackPlans.d.ts +13 -0
- package/dist/lib/lookbackPlans.js +68 -0
- package/dist/lib/machines.d.ts +27 -6
- package/dist/lib/machines.js +25 -14
- package/dist/lib/member-output.d.ts +20 -0
- package/dist/lib/member-output.js +57 -0
- package/dist/lib/preflight-copy.d.ts +7 -0
- package/dist/lib/preflight-copy.js +31 -0
- package/dist/lib/profile-machine-identity-guard.js +11 -1
- package/dist/lib/roles.d.ts +2 -2
- package/dist/lib/task-admission.d.ts +9 -0
- package/dist/lib/task-admission.js +35 -0
- package/dist/lib/task-batch.d.ts +4 -0
- package/dist/lib/task-batch.js +2 -0
- package/dist/lib/task-economics.d.ts +10 -0
- package/dist/lib/task-economics.js +24 -2
- package/dist/lib/task-operations.d.ts +25 -0
- package/dist/lib/task-operations.js +123 -0
- package/dist/lib/task-preflight.d.ts +35 -0
- package/dist/lib/task-preflight.js +121 -0
- package/dist/lib/task-resource-references.d.ts +23 -0
- package/dist/lib/task-resource-references.js +119 -0
- package/dist/lib/task-spec-verification.d.ts +42 -0
- package/dist/lib/task-spec-verification.js +101 -0
- package/dist/lib/task-work.d.ts +11 -0
- package/dist/lib/task-work.js +41 -0
- package/dist/lib/task-write-attribution.d.ts +26 -0
- package/dist/lib/task-write-attribution.js +47 -0
- package/dist/lib/tasks.d.ts +13 -0
- package/dist/lib/tasks.js +61 -8
- package/dist/lib/triggers.d.ts +18 -0
- package/dist/lib/triggers.js +97 -5
- package/dist/lib/usage-discovery.d.ts +4 -0
- package/dist/lib/usage-discovery.js +14 -4
- package/dist/lib/widgetApps.d.ts +10 -0
- package/dist/lib/widgetApps.js +47 -0
- package/dist/lib/widgetStaticScan.js +25 -1
- package/dist/lib/workflow-run-view.d.ts +4 -0
- package/dist/lib/workflow-run-view.js +5 -0
- package/dist/lib/workspaces.d.ts +33 -9
- package/dist/lib/workspaces.js +19 -3
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/computerWire.d.ts +14 -1
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/computerWire.js +47 -2
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/daemonToolApproval.d.ts +49 -1
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/daemonToolApproval.js +26 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/daemonWire.d.ts +118 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/daemonWire.js +614 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/index.d.ts +1 -1
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/index.js +5 -3
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/machineUuid.d.ts +60 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/machineUuid.js +130 -6
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/refresh.d.ts +2 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/refresh.js +15 -2
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/refreshClassification.d.ts +5 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/refreshClassification.js +3 -1
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/sessionRevocation.d.ts +177 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/sessionRevocation.js +484 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/telemetryRedaction.d.ts +11 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/telemetryRedaction.js +46 -7
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/toolApprovalSignature.d.ts +232 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/toolApprovalSignature.js +372 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/types.d.ts +17 -1
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/types.js +12 -1
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/computerWire.d.ts +14 -1
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/computerWire.js +45 -2
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/daemonToolApproval.d.ts +49 -1
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/daemonToolApproval.js +24 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/daemonWire.d.ts +118 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/daemonWire.js +608 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/index.d.ts +1 -1
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/index.js +1 -1
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/machineUuid.d.ts +60 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/machineUuid.js +128 -6
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/refresh.d.ts +2 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/refresh.js +15 -2
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/refreshClassification.d.ts +5 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/refreshClassification.js +3 -1
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/sessionRevocation.d.ts +177 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/sessionRevocation.js +472 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/telemetryRedaction.d.ts +11 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/telemetryRedaction.js +44 -6
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/toolApprovalSignature.d.ts +232 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/toolApprovalSignature.js +360 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/types.d.ts +17 -1
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/types.js +12 -1
- package/dist/node_modules/@skrr-ai/auth-core/package.json +31 -1
- package/dist/node_modules/@skrr-ai/data-provider/index.js +25255 -18711
- package/docs/v1/operations.md +52 -0
- package/docs/v1/space-search.md +19 -0
- package/oclif.manifest.json +4843 -513
- package/package.json +32 -2
|
@@ -108,6 +108,8 @@ export declare const COMPUTER_EVENTS: {
|
|
|
108
108
|
* them. Needs `computer_browser_file_chooser_v1`.
|
|
109
109
|
*/
|
|
110
110
|
readonly fileChooser: "computer:surface:filechooser";
|
|
111
|
+
/** Deliberate semantic teaching in the browser controlled by this attachment. */
|
|
112
|
+
readonly teaching: "computer:surface:teaching";
|
|
111
113
|
};
|
|
112
114
|
/**
|
|
113
115
|
* API ⇄ daemon. The daemon transports (Socket.IO and SSE) carry no
|
|
@@ -135,6 +137,7 @@ export declare const DAEMON_COMPUTER_EVENTS: {
|
|
|
135
137
|
readonly dialog: "daemon:computer:surface:dialog";
|
|
136
138
|
readonly copy: "daemon:computer:surface:copy";
|
|
137
139
|
readonly fileChooser: "daemon:computer:surface:filechooser";
|
|
140
|
+
readonly teaching: "daemon:computer:surface:teaching";
|
|
138
141
|
/**
|
|
139
142
|
* Pin or unpin the surface an open human-input request names (§8): a pinned
|
|
140
143
|
* surface is not reclaimed by idle or wall-clock expiry. Fire-and-forget,
|
|
@@ -244,6 +247,9 @@ export declare const COMPUTER_CAPABILITIES: {
|
|
|
244
247
|
* them (headless refuses them), so no surface may claim to show one.
|
|
245
248
|
*/
|
|
246
249
|
readonly browserPage: "computer_browser_page_v1";
|
|
250
|
+
readonly browserTeaching: "computer_browser_teaching_v1";
|
|
251
|
+
/** Separately consented, origin-filtered semantic activity review. */
|
|
252
|
+
readonly browserActivityReview: "computer_browser_activity_review_v1";
|
|
247
253
|
/** Sharing a person's own surface with an agent session (§5.4). */
|
|
248
254
|
readonly surfaceShare: "computer_surface_share_v1";
|
|
249
255
|
/** Pinning a surface an open human-input request names: `daemon:computer:surface:pin` (§8). */
|
|
@@ -1036,7 +1042,7 @@ export declare function computerDeclaredServiceSpec(raw: unknown): {
|
|
|
1036
1042
|
* caller can never be handed an address off the machine.
|
|
1037
1043
|
*/
|
|
1038
1044
|
export declare function computerDeclaredServiceUrl(service: Pick<ComputerDeclaredServiceSpec, 'port'> & Partial<Pick<ComputerDeclaredServiceSpec, 'path' | 'protocol'>>): string;
|
|
1039
|
-
export declare const COMPUTER_MACHINE_KINDS: readonly ["dedicated", "personal"];
|
|
1045
|
+
export declare const COMPUTER_MACHINE_KINDS: readonly ["dedicated", "personal", "space"];
|
|
1040
1046
|
export type ComputerMachineKind = (typeof COMPUTER_MACHINE_KINDS)[number];
|
|
1041
1047
|
/**
|
|
1042
1048
|
* One picture per machine state; none of them is a spinner without a bound,
|
|
@@ -1148,3 +1154,10 @@ export interface ComputerDaemonLogResult {
|
|
|
1148
1154
|
/** Lines the redaction rewrote anywhere in the ring (a count, never content). */
|
|
1149
1155
|
redactedLines: number;
|
|
1150
1156
|
}
|
|
1157
|
+
/** Exact origins only: neither URL paths nor credentials broaden consent. */
|
|
1158
|
+
export interface BrowserActivityOriginPolicy {
|
|
1159
|
+
allowOrigins: string[];
|
|
1160
|
+
excludeOrigins: string[];
|
|
1161
|
+
}
|
|
1162
|
+
export declare function normalizeBrowserActivityOriginPolicy(input: unknown): BrowserActivityOriginPolicy;
|
|
1163
|
+
export declare function browserActivityOriginAllowed(policy: BrowserActivityOriginPolicy, url: unknown): boolean;
|
|
@@ -111,6 +111,8 @@ export const COMPUTER_EVENTS = {
|
|
|
111
111
|
* them. Needs `computer_browser_file_chooser_v1`.
|
|
112
112
|
*/
|
|
113
113
|
fileChooser: 'computer:surface:filechooser',
|
|
114
|
+
/** Deliberate semantic teaching in the browser controlled by this attachment. */
|
|
115
|
+
teaching: 'computer:surface:teaching',
|
|
114
116
|
};
|
|
115
117
|
/**
|
|
116
118
|
* API ⇄ daemon. The daemon transports (Socket.IO and SSE) carry no
|
|
@@ -139,6 +141,7 @@ export const DAEMON_COMPUTER_EVENTS = {
|
|
|
139
141
|
dialog: 'daemon:computer:surface:dialog',
|
|
140
142
|
copy: 'daemon:computer:surface:copy',
|
|
141
143
|
fileChooser: 'daemon:computer:surface:filechooser',
|
|
144
|
+
teaching: 'daemon:computer:surface:teaching',
|
|
142
145
|
/**
|
|
143
146
|
* Pin or unpin the surface an open human-input request names (§8): a pinned
|
|
144
147
|
* surface is not reclaimed by idle or wall-clock expiry. Fire-and-forget,
|
|
@@ -264,6 +267,9 @@ export const COMPUTER_CAPABILITIES = {
|
|
|
264
267
|
* them (headless refuses them), so no surface may claim to show one.
|
|
265
268
|
*/
|
|
266
269
|
browserPage: 'computer_browser_page_v1',
|
|
270
|
+
browserTeaching: 'computer_browser_teaching_v1',
|
|
271
|
+
/** Separately consented, origin-filtered semantic activity review. */
|
|
272
|
+
browserActivityReview: 'computer_browser_activity_review_v1',
|
|
267
273
|
/** Sharing a person's own surface with an agent session (§5.4). */
|
|
268
274
|
surfaceShare: 'computer_surface_share_v1',
|
|
269
275
|
/** Pinning a surface an open human-input request names: `daemon:computer:surface:pin` (§8). */
|
|
@@ -1111,7 +1117,7 @@ export function computerDeclaredServiceUrl(service) {
|
|
|
1111
1117
|
// ---------------------------------------------------------------------------
|
|
1112
1118
|
// Machines and power (§10, §18)
|
|
1113
1119
|
// ---------------------------------------------------------------------------
|
|
1114
|
-
export const COMPUTER_MACHINE_KINDS = ['dedicated', 'personal'];
|
|
1120
|
+
export const COMPUTER_MACHINE_KINDS = ['dedicated', 'personal', 'space'];
|
|
1115
1121
|
/**
|
|
1116
1122
|
* One picture per machine state; none of them is a spinner without a bound,
|
|
1117
1123
|
* and none collapses two states into the reassuring one.
|
|
@@ -1212,7 +1218,7 @@ export function computerShowsDesktop(phase) {
|
|
|
1212
1218
|
}
|
|
1213
1219
|
/** Power actions are offered for a Dedicated Runtime only; a personal machine has none (§18). */
|
|
1214
1220
|
export function computerOffersPowerActions(machineKind) {
|
|
1215
|
-
return machineKind === 'dedicated';
|
|
1221
|
+
return machineKind === 'dedicated' || machineKind === 'space';
|
|
1216
1222
|
}
|
|
1217
1223
|
// ---------------------------------------------------------------------------
|
|
1218
1224
|
// The daemon's own log (`computer_daemon_log_v1`)
|
|
@@ -1243,3 +1249,40 @@ export const COMPUTER_DAEMON_LOG_LIMITS = {
|
|
|
1243
1249
|
rateMax: 30,
|
|
1244
1250
|
rateWindowMs: 60 * 1000,
|
|
1245
1251
|
};
|
|
1252
|
+
export function normalizeBrowserActivityOriginPolicy(input) {
|
|
1253
|
+
if (!input || typeof input !== 'object' || Array.isArray(input))
|
|
1254
|
+
throw new Error('Choose exact allowed and excluded web origins');
|
|
1255
|
+
const value = input;
|
|
1256
|
+
if (Object.keys(value).some((key) => !['allowOrigins', 'excludeOrigins'].includes(key)))
|
|
1257
|
+
throw new Error('Unsupported source filter');
|
|
1258
|
+
const origins = (items, required) => {
|
|
1259
|
+
if (!Array.isArray(items) || items.length > 20 || (required && !items.length))
|
|
1260
|
+
throw new Error('Choose from one to twenty allowed origins and up to twenty excluded origins');
|
|
1261
|
+
return [...new Set(items.map((item) => {
|
|
1262
|
+
if (typeof item !== 'string' || item.length > 500)
|
|
1263
|
+
throw new Error('Use an exact http or https origin without a path, credentials, query or fragment');
|
|
1264
|
+
let url;
|
|
1265
|
+
try {
|
|
1266
|
+
url = new URL(item);
|
|
1267
|
+
}
|
|
1268
|
+
catch {
|
|
1269
|
+
throw new Error('Use an exact http or https origin');
|
|
1270
|
+
}
|
|
1271
|
+
if (!['http:', 'https:'].includes(url.protocol) || url.hostname.includes('*') || url.username || url.password || item !== url.origin)
|
|
1272
|
+
throw new Error('Use an exact http or https origin without a path, credentials, query or fragment');
|
|
1273
|
+
return url.origin;
|
|
1274
|
+
}))].sort();
|
|
1275
|
+
};
|
|
1276
|
+
return { allowOrigins: origins(value.allowOrigins, true), excludeOrigins: origins(value.excludeOrigins, false) };
|
|
1277
|
+
}
|
|
1278
|
+
export function browserActivityOriginAllowed(policy, url) {
|
|
1279
|
+
if (typeof url !== 'string')
|
|
1280
|
+
return false;
|
|
1281
|
+
try {
|
|
1282
|
+
const origin = new URL(url).origin;
|
|
1283
|
+
return ['http:', 'https:'].includes(new URL(url).protocol) && policy.allowOrigins.includes(origin) && !policy.excludeOrigins.includes(origin);
|
|
1284
|
+
}
|
|
1285
|
+
catch {
|
|
1286
|
+
return false;
|
|
1287
|
+
}
|
|
1288
|
+
}
|
|
@@ -31,6 +31,11 @@
|
|
|
31
31
|
* and the daemon spends each approval once: a second delivery of the same
|
|
32
32
|
* attestation inside its window is refused as `replayed`. That ledger lives
|
|
33
33
|
* in daemon memory, so a daemon restart inside the (≤60s) window forgets it.
|
|
34
|
+
*
|
|
35
|
+
* v2 (OSK-16614, `toolApprovalSignature.ts`) carries the same claims signed by
|
|
36
|
+
* a platform Ed25519 key and bound to the daemon and session; a daemon that has
|
|
37
|
+
* pinned the platform's keyset accepts only v2. This module stays the v1
|
|
38
|
+
* format and the checks both versions share.
|
|
34
39
|
*/
|
|
35
40
|
/** Announced by a daemon that honours `attestedApproval` on daemon:tool:request. */
|
|
36
41
|
export declare const DAEMON_TOOL_ATTESTED_APPROVAL_CAPABILITY = "daemon_tool_attested_approval_v1";
|
|
@@ -84,6 +89,14 @@ export interface AttestedToolApproval {
|
|
|
84
89
|
issuedAt: number;
|
|
85
90
|
expiresAt: number;
|
|
86
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Deterministic serialization for the input digest: objects sort keys
|
|
94
|
+
* recursively, arrays keep order, non-JSON values normalize the way
|
|
95
|
+
* `JSON.stringify` would emit them (undefined/functions in objects drop, in
|
|
96
|
+
* arrays become null). Both runtimes must digest the SAME bytes — the server
|
|
97
|
+
* mints and the daemon verifies — so this lives here, once.
|
|
98
|
+
*/
|
|
99
|
+
export declare function canonicalApprovalJson(value: unknown): string;
|
|
87
100
|
/** The digest both sides compute over `toolInput`. */
|
|
88
101
|
export declare function canonicalToolInputDigest(toolInput: unknown): string;
|
|
89
102
|
/** Server side: mint the attestation after a person approved THIS call. */
|
|
@@ -106,8 +119,24 @@ export declare function mintAttestedToolApproval(args: {
|
|
|
106
119
|
* - `replayed` — this exact approval was already spent on this daemon
|
|
107
120
|
* (the ledger is the verifier's caller's, see the daemon's
|
|
108
121
|
* `permissions/attestation-ledger.ts`)
|
|
122
|
+
*
|
|
123
|
+
* Signed approvals (`tool_approval_signed_v1`, `toolApprovalSignature.ts`):
|
|
124
|
+
* - `unsigned` — a v1 (unsigned) attestation reached a daemon that has
|
|
125
|
+
* pinned the platform's approval keyset: a downgrade
|
|
126
|
+
* - `unknown_key` — signed by a key id the pinned keyset does not hold
|
|
127
|
+
* - `signature` — the signature does not verify over the payload
|
|
128
|
+
* - `daemon_binding` — signed for a different daemon or session
|
|
129
|
+
* - `unpinned` — a v2 attestation reached a daemon holding no keyset,
|
|
130
|
+
* so nothing here can verify it
|
|
131
|
+
* - `pin_unreadable` — the pinned keyset file exists and cannot be read;
|
|
132
|
+
* nothing is accepted rather than falling back to v1
|
|
133
|
+
*
|
|
134
|
+
* All are internal-only for the person: the daemon log line
|
|
135
|
+
* (`describePermissionRefusalForLog`, `attestation=<reason>`) names them, and
|
|
136
|
+
* the refusal text a caller reads distinguishes only `absent` from "did not
|
|
137
|
+
* verify" so a probing caller learns nothing new.
|
|
109
138
|
*/
|
|
110
|
-
export type AttestedToolApprovalRefusalReason = 'absent' | 'malformed' | 'binding' | 'expired' | 'window' | 'replayed';
|
|
139
|
+
export type AttestedToolApprovalRefusalReason = 'absent' | 'malformed' | 'binding' | 'expired' | 'window' | 'replayed' | 'unsigned' | 'unknown_key' | 'signature' | 'daemon_binding' | 'unpinned' | 'pin_unreadable';
|
|
111
140
|
export type AttestedToolApprovalVerdict = {
|
|
112
141
|
ok: true;
|
|
113
142
|
} | {
|
|
@@ -131,3 +160,22 @@ export declare function verifyAttestedToolApproval(approval: unknown, call: {
|
|
|
131
160
|
toolInput: unknown;
|
|
132
161
|
now?: number;
|
|
133
162
|
}): AttestedToolApprovalVerdict;
|
|
163
|
+
/**
|
|
164
|
+
* The checks every attestation version shares once its claims are trusted to
|
|
165
|
+
* be what the issuer wrote: freshness, the verifier-owned window, and the
|
|
166
|
+
* binding to this exact call. v1 reaches here after a shape check; v2
|
|
167
|
+
* (`toolApprovalSignature.ts`) only after its signature verified, so one
|
|
168
|
+
* implementation decides "expired", "window" and "binding" for both.
|
|
169
|
+
*/
|
|
170
|
+
export declare function verifyAttestedToolApprovalClaims(a: {
|
|
171
|
+
toolUseId: string;
|
|
172
|
+
toolName: string;
|
|
173
|
+
inputSha256: string;
|
|
174
|
+
issuedAt: number;
|
|
175
|
+
expiresAt: number;
|
|
176
|
+
}, call: {
|
|
177
|
+
toolUseId: string;
|
|
178
|
+
toolName: string;
|
|
179
|
+
toolInput: unknown;
|
|
180
|
+
now?: number;
|
|
181
|
+
}): AttestedToolApprovalVerdict;
|
|
@@ -32,6 +32,11 @@ import { createHash } from 'node:crypto';
|
|
|
32
32
|
* and the daemon spends each approval once: a second delivery of the same
|
|
33
33
|
* attestation inside its window is refused as `replayed`. That ledger lives
|
|
34
34
|
* in daemon memory, so a daemon restart inside the (≤60s) window forgets it.
|
|
35
|
+
*
|
|
36
|
+
* v2 (OSK-16614, `toolApprovalSignature.ts`) carries the same claims signed by
|
|
37
|
+
* a platform Ed25519 key and bound to the daemon and session; a daemon that has
|
|
38
|
+
* pinned the platform's keyset accepts only v2. This module stays the v1
|
|
39
|
+
* format and the checks both versions share.
|
|
35
40
|
*/
|
|
36
41
|
/** Announced by a daemon that honours `attestedApproval` on daemon:tool:request. */
|
|
37
42
|
export const DAEMON_TOOL_ATTESTED_APPROVAL_CAPABILITY = 'daemon_tool_attested_approval_v1';
|
|
@@ -105,6 +110,9 @@ export const ATTESTED_TOOL_APPROVAL_TTL_MS = 60 * 1000;
|
|
|
105
110
|
* arrays become null). Both runtimes must digest the SAME bytes — the server
|
|
106
111
|
* mints and the daemon verifies — so this lives here, once.
|
|
107
112
|
*/
|
|
113
|
+
export function canonicalApprovalJson(value) {
|
|
114
|
+
return canonicalJson(value);
|
|
115
|
+
}
|
|
108
116
|
function canonicalJson(value) {
|
|
109
117
|
if (value === null || typeof value !== 'object') {
|
|
110
118
|
if (value === undefined || typeof value === 'function' || typeof value === 'symbol') {
|
|
@@ -168,6 +176,22 @@ export function verifyAttestedToolApproval(approval, call) {
|
|
|
168
176
|
typeof a.expiresAt !== 'number') {
|
|
169
177
|
return { ok: false, reason: 'malformed' };
|
|
170
178
|
}
|
|
179
|
+
return verifyAttestedToolApprovalClaims({
|
|
180
|
+
toolUseId: a.toolUseId,
|
|
181
|
+
toolName: a.toolName,
|
|
182
|
+
inputSha256: a.inputSha256,
|
|
183
|
+
issuedAt: a.issuedAt,
|
|
184
|
+
expiresAt: a.expiresAt,
|
|
185
|
+
}, call);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* The checks every attestation version shares once its claims are trusted to
|
|
189
|
+
* be what the issuer wrote: freshness, the verifier-owned window, and the
|
|
190
|
+
* binding to this exact call. v1 reaches here after a shape check; v2
|
|
191
|
+
* (`toolApprovalSignature.ts`) only after its signature verified, so one
|
|
192
|
+
* implementation decides "expired", "window" and "binding" for both.
|
|
193
|
+
*/
|
|
194
|
+
export function verifyAttestedToolApprovalClaims(a, call) {
|
|
171
195
|
const now = call.now ?? Date.now();
|
|
172
196
|
if (a.expiresAt <= now || a.issuedAt > now + ATTESTED_TOOL_APPROVAL_CLOCK_SKEW_MS) {
|
|
173
197
|
return { ok: false, reason: 'expired' };
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* daemonWire.ts — the ONE declaration of every name the daemon and the API
|
|
3
|
+
* put on the wire between them, with what each name is for (OSK-16617).
|
|
4
|
+
*
|
|
5
|
+
* `computerWire.ts` proved the pattern for one family: the names live in the
|
|
6
|
+
* published package every end can import, and a boundary spec fails on a
|
|
7
|
+
* second spelling. This module generalises it to the whole daemon wire. Each
|
|
8
|
+
* entry declares:
|
|
9
|
+
*
|
|
10
|
+
* - `direction` — who sends it. `bidirectional` means both ends send AND
|
|
11
|
+
* handle the same name (`rpc:request`, the model-proxy relay);
|
|
12
|
+
* - `delivery` — `acked` when the sender learns that it arrived (a Socket.IO
|
|
13
|
+
* acknowledgement callback, or an answer event named in `answeredBy`),
|
|
14
|
+
* `fire_and_forget` otherwise;
|
|
15
|
+
* - `stability` — `stable`: every supported daemon and API speak it, and a
|
|
16
|
+
* change needs a new capability; `experimental`: newer than the fleet, or
|
|
17
|
+
* declared ahead of a speaker (`dormant` says which), and its shape may
|
|
18
|
+
* still move; `deprecated`: kept only so an older peer is heard, never
|
|
19
|
+
* newly sent;
|
|
20
|
+
* - `capability` — the capability the daemon announces before the API may
|
|
21
|
+
* send it (or before the daemon itself sends it). `null` means the event
|
|
22
|
+
* predates capability gating and every supported daemon speaks it;
|
|
23
|
+
* - `payload` — the zod schema that validates it, NAMED (an export of
|
|
24
|
+
* `@skrr-ai/data-provider`, which owns every zod schema; this module stays
|
|
25
|
+
* zod-free so the browser, React Native and a bun-compiled daemon all load
|
|
26
|
+
* it), or `unvalidated`. "This event has no schema" is a recorded fact
|
|
27
|
+
* here, counted by `scripts/daemon-wire/unvalidated-ratchet.mjs`, which
|
|
28
|
+
* lets the count fall and never rise.
|
|
29
|
+
*
|
|
30
|
+
* Who checks it:
|
|
31
|
+
*
|
|
32
|
+
* - `daemon/src/daemon-wire-registry.test.ts` parses the daemon's source and
|
|
33
|
+
* fails on an event the daemon handles or sends that is not declared here,
|
|
34
|
+
* or that it handles or sends against its declared direction;
|
|
35
|
+
* - `api/server/websocket/__tests__/daemonWireRegistry.spec.js` holds the
|
|
36
|
+
* API's SSE ingress table (`EXACT_DAEMON_INGRESS`) and its daemon-socket
|
|
37
|
+
* listeners to the same declarations. The API keeps its own table on
|
|
38
|
+
* purpose: the routing kind is server-owned, and an API booting on a stale
|
|
39
|
+
* package build must not lose routes;
|
|
40
|
+
* - `scripts/daemon-wire/generate-schema.mjs` writes
|
|
41
|
+
* `docs/protocol/daemon-wire.schema.json` from here (the Codex
|
|
42
|
+
* `generate-json-schema` analogue), and a spec fails when it is stale.
|
|
43
|
+
*
|
|
44
|
+
* Event names, never routing: a `{provider}` placeholder stands for one
|
|
45
|
+
* session-provider spelling (`daemon:{provider}:request`). Which spellings are
|
|
46
|
+
* heard is `firstPartyHarness.ts`'s and the API's `sessionProvider.js`'s
|
|
47
|
+
* decision, not this table's.
|
|
48
|
+
*/
|
|
49
|
+
export declare const DAEMON_WIRE_DIRECTIONS: readonly ["server_to_daemon", "daemon_to_server", "bidirectional"];
|
|
50
|
+
export type DaemonWireDirection = (typeof DAEMON_WIRE_DIRECTIONS)[number];
|
|
51
|
+
export declare const DAEMON_WIRE_DELIVERIES: readonly ["fire_and_forget", "acked"];
|
|
52
|
+
export type DaemonWireDelivery = (typeof DAEMON_WIRE_DELIVERIES)[number];
|
|
53
|
+
export declare const DAEMON_WIRE_STABILITIES: readonly ["stable", "experimental", "deprecated"];
|
|
54
|
+
export type DaemonWireStability = (typeof DAEMON_WIRE_STABILITIES)[number];
|
|
55
|
+
/**
|
|
56
|
+
* How a name travels. `event` is its own Socket.IO / SSE event; `rpc` is a
|
|
57
|
+
* `method` inside `rpc:request`, answered on `rpc:response` — the shape SSE
|
|
58
|
+
* needs because it has no acknowledgement callback. Several older methods are
|
|
59
|
+
* still ALSO their own event for a Socket.IO daemon, and are declared once
|
|
60
|
+
* with both.
|
|
61
|
+
*/
|
|
62
|
+
export declare const DAEMON_WIRE_CARRIERS: readonly ["event", "rpc"];
|
|
63
|
+
export type DaemonWireCarrier = (typeof DAEMON_WIRE_CARRIERS)[number];
|
|
64
|
+
/**
|
|
65
|
+
* The zod schema that validates a payload, by its export name in
|
|
66
|
+
* `@skrr-ai/data-provider` (a dotted path reaches into an exported table:
|
|
67
|
+
* `DAEMON_COMPUTER_EVENT_PAYLOAD_SCHEMAS.attach`). `unvalidated` is a recorded
|
|
68
|
+
* gap, not a default: both ends read the payload field by field.
|
|
69
|
+
*/
|
|
70
|
+
export type DaemonWirePayload = {
|
|
71
|
+
readonly kind: 'zod';
|
|
72
|
+
readonly schema: string;
|
|
73
|
+
} | {
|
|
74
|
+
readonly kind: 'unvalidated';
|
|
75
|
+
};
|
|
76
|
+
export interface DaemonWireEntry {
|
|
77
|
+
readonly name: string;
|
|
78
|
+
readonly direction: DaemonWireDirection;
|
|
79
|
+
readonly delivery: DaemonWireDelivery;
|
|
80
|
+
/** The name carrying the answer, when `delivery` is `acked` by an answer rather than a callback. */
|
|
81
|
+
readonly answeredBy?: string;
|
|
82
|
+
readonly stability: DaemonWireStability;
|
|
83
|
+
readonly capability: string | null;
|
|
84
|
+
/**
|
|
85
|
+
* A capability the API announces in `daemon:registered.serverCaps` that
|
|
86
|
+
* changes this name's delivery (`toolResponseAck` turns a fire-and-forget
|
|
87
|
+
* `daemon:tool:response` into an acked one). Absent: the API's version alone decides.
|
|
88
|
+
*/
|
|
89
|
+
readonly serverCapability?: string;
|
|
90
|
+
readonly carriers: readonly DaemonWireCarrier[];
|
|
91
|
+
readonly payload: DaemonWirePayload;
|
|
92
|
+
readonly purpose: string;
|
|
93
|
+
/**
|
|
94
|
+
* The API also accepts this name from a person's client socket and relays
|
|
95
|
+
* it to the daemon under the same name (`daemon:list-dirs`). Without this, a
|
|
96
|
+
* server-side listener of a server → daemon name would read as a direction error.
|
|
97
|
+
*/
|
|
98
|
+
readonly relayedFromClient?: boolean;
|
|
99
|
+
/**
|
|
100
|
+
* Declared, and one end has no speaker for it: why. A dormant entry is exempt
|
|
101
|
+
* from "somebody speaks this" and is still subject to every other check.
|
|
102
|
+
*/
|
|
103
|
+
readonly dormant?: string;
|
|
104
|
+
}
|
|
105
|
+
/** Every daemon ⇄ API name, in declaration order (which the generated schema keeps). */
|
|
106
|
+
export declare const DAEMON_WIRE: readonly DaemonWireEntry[];
|
|
107
|
+
export declare const DAEMON_WIRE_NAMES: readonly string[];
|
|
108
|
+
/**
|
|
109
|
+
* The declaration a concrete name belongs to, or null. An exact declaration
|
|
110
|
+
* wins over a templated one: `daemon:ping:response` is its own event, not a
|
|
111
|
+
* `daemon:{provider}:response`. A templated match says only that the SHAPE is
|
|
112
|
+
* declared; whether a provider spelling is heard is the API's decision.
|
|
113
|
+
*/
|
|
114
|
+
export declare function daemonWireEntry(name: string): DaemonWireEntry | null;
|
|
115
|
+
/** Whether `direction` lets `end` send the name. */
|
|
116
|
+
export declare function daemonWireSends(entry: DaemonWireEntry, end: 'daemon' | 'server'): boolean;
|
|
117
|
+
/** Whether `direction` lets `end` handle the name. */
|
|
118
|
+
export declare function daemonWireHandles(entry: DaemonWireEntry, end: 'daemon' | 'server'): boolean;
|