@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
|
@@ -6,6 +6,7 @@ exports.completionLines = completionLines;
|
|
|
6
6
|
exports.reviewPolicyLine = reviewPolicyLine;
|
|
7
7
|
exports.labelsLine = labelsLine;
|
|
8
8
|
exports.taskExecutorLabel = taskExecutorLabel;
|
|
9
|
+
exports.resolutionLines = resolutionLines;
|
|
9
10
|
exports.recurrenceArmFailureLines = recurrenceArmFailureLines;
|
|
10
11
|
exports.taskFailureLines = taskFailureLines;
|
|
11
12
|
const core_1 = require("@oclif/core");
|
|
@@ -151,6 +152,43 @@ function taskExecutorLabel(t, bin = 'skrr') {
|
|
|
151
152
|
return '-';
|
|
152
153
|
}
|
|
153
154
|
}
|
|
155
|
+
function resolverLabel(by, names) {
|
|
156
|
+
if (!by || typeof by !== 'object' || !by.kind)
|
|
157
|
+
return null;
|
|
158
|
+
const kind = String(by.kind);
|
|
159
|
+
if (kind === 'human')
|
|
160
|
+
return `person ${(0, principal_display_1.displayPrincipal)(by.userId, names)}`;
|
|
161
|
+
if (kind === 'agent')
|
|
162
|
+
return `agent ${(0, principal_display_1.displayPrincipal)(by.agentId, names)}`;
|
|
163
|
+
if (kind === 'system')
|
|
164
|
+
return `system${by.service ? ` (${String(by.service)})` : ''}`;
|
|
165
|
+
if (kind === 'integration')
|
|
166
|
+
return `integration${by.provider ? ` (${String(by.provider)})` : ''}`;
|
|
167
|
+
return kind;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* The `Resolution:` lines for any resolved Task: how it ended, the reason the
|
|
171
|
+
* closer recorded, who closed it, and what the close stood on. The reason used to
|
|
172
|
+
* be JSON-only, so text showed "Task workflow type is cancelled" for every
|
|
173
|
+
* cancel, and a Task its Workflow step cancelled could not be told from one a
|
|
174
|
+
* person cancelled by hand (OSK-16475). Silent for an open Task.
|
|
175
|
+
*/
|
|
176
|
+
function resolutionLines(t, names) {
|
|
177
|
+
const resolution = t.resolution;
|
|
178
|
+
if (!resolution || typeof resolution !== 'object' || !resolution.kind)
|
|
179
|
+
return [];
|
|
180
|
+
const reason = typeof resolution.reason === 'string' ? resolution.reason.trim() : '';
|
|
181
|
+
const closure = resolution.closure
|
|
182
|
+
? (0, task_closure_1.closureSnapshotLines)(resolution.closure)
|
|
183
|
+
: [];
|
|
184
|
+
const lines = [`Resolution: ${String(resolution.kind)}${reason ? ` — ${reason}` : ''}`];
|
|
185
|
+
if (closure.length > 0)
|
|
186
|
+
lines.push(` ${closure.join(' ')}`);
|
|
187
|
+
const by = resolverLabel(resolution.resolvedBy, names);
|
|
188
|
+
if (by)
|
|
189
|
+
lines.push(`Resolved by: ${by}`);
|
|
190
|
+
return lines;
|
|
191
|
+
}
|
|
154
192
|
/**
|
|
155
193
|
* The `Recurrence:` line for a series whose next occurrence was never armed.
|
|
156
194
|
* Silent otherwise: a healthy series has nothing to say here.
|
|
@@ -163,10 +201,14 @@ function recurrenceArmFailureLines(t, bin = 'skrr') {
|
|
|
163
201
|
const ref = (typeof t.identifier === 'string' && t.identifier) ||
|
|
164
202
|
(typeof t.id === 'string' && t.id) ||
|
|
165
203
|
'<task-id>';
|
|
204
|
+
// A finished occurrence is re-armed (`tasks schedule` refuses it, OSK-15338); a LIVE series the
|
|
205
|
+
// scheduler stopped on an unrunnable pattern is rescheduled with a valid one, which clears it.
|
|
206
|
+
const finished = ['completed', 'cancelled'].includes(String(t.statusType ?? ''));
|
|
166
207
|
return [
|
|
167
208
|
`Recurrence: ${(0, data_provider_1.describeRecurrenceArmFailure)(code)} (${code})`,
|
|
168
|
-
|
|
169
|
-
|
|
209
|
+
finished || t.statusType === undefined
|
|
210
|
+
? ` ${(0, task_recurrence_outcome_1.recurrenceRearmHint)(code, ref, bin)}`
|
|
211
|
+
: ` Reschedule it with \`${bin} tasks schedule ${ref} --at <ISO time> --cron "<minute hour day month weekday>"\`.`,
|
|
170
212
|
];
|
|
171
213
|
}
|
|
172
214
|
/**
|
|
@@ -203,25 +245,31 @@ function taskFailureLines(t, bin = 'skrr') {
|
|
|
203
245
|
if (!error && !failedAt && !isFailed)
|
|
204
246
|
return [];
|
|
205
247
|
const lines = [];
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
failedAt
|
|
210
|
-
attempts != null ? `attempt ${attempts}` : null,
|
|
211
|
-
runId ? `run ${runId}` : null,
|
|
212
|
-
].filter(Boolean);
|
|
213
|
-
if (facts.length > 0)
|
|
214
|
-
lines.push(`Failed: ${facts.join(' · ')}`);
|
|
248
|
+
// Task failure stamps survive later successful Runs. Neither the lifetime
|
|
249
|
+
// attempt counter nor lastFinalizedRunId identifies the Run that failed.
|
|
250
|
+
if (failedAt)
|
|
251
|
+
lines.push(`Failure recorded: ${failedAt}`);
|
|
215
252
|
if (error) {
|
|
216
253
|
// Labelled with the JSON key, because a reader who needs this in a script
|
|
217
254
|
// needs the key more than they need the prose.
|
|
218
|
-
lines.push(`
|
|
255
|
+
lines.push(`Recorded error: ${error}`);
|
|
219
256
|
lines.push(' (`executionError` in --json)');
|
|
220
257
|
}
|
|
221
258
|
else if (isFailed) {
|
|
222
|
-
lines.push('
|
|
259
|
+
lines.push('Recorded error: none recorded on the task.');
|
|
260
|
+
}
|
|
261
|
+
const failure = t.executionFailure;
|
|
262
|
+
if (failure?.recovery && typeof failure.recovery === 'string' && !error.includes(failure.recovery)) {
|
|
263
|
+
lines.push(`Recovery: ${failure.recovery}`);
|
|
264
|
+
}
|
|
265
|
+
if (failure?.headline && typeof failure.headline === 'string' && !error.includes(failure.headline)) {
|
|
266
|
+
lines.push(`Cause: ${failure.headline}`);
|
|
267
|
+
}
|
|
268
|
+
if (failure?.runId) {
|
|
269
|
+
lines.push(`Diagnostic: executionFailure in --json (run ${failure.runId})`);
|
|
223
270
|
}
|
|
224
271
|
const ref = String(t.identifier ?? t.id ?? t._id ?? '<task-id>');
|
|
272
|
+
lines.push(`Latest runs: ${bin} tasks runs ${ref}`);
|
|
225
273
|
lines.push(`Per-run why: ${bin} tasks activity ${ref} --json (details.error, keyed by runId)`);
|
|
226
274
|
return lines;
|
|
227
275
|
}
|
|
@@ -352,6 +400,21 @@ class TasksShow extends base_command_1.BaseCommand {
|
|
|
352
400
|
this.log(line);
|
|
353
401
|
const agents = Array.isArray(t.assigneeAgentIds) ? t.assigneeAgentIds : [];
|
|
354
402
|
const users = Array.isArray(t.assigneeUserIds) ? t.assigneeUserIds : [];
|
|
403
|
+
// Principals print as names, not ObjectIds — same rule as labels: a
|
|
404
|
+
// roster that cannot be read prints ids rather than failing the command.
|
|
405
|
+
const resolvedBy = t.resolution?.resolvedBy;
|
|
406
|
+
const principalIds = [
|
|
407
|
+
t.author,
|
|
408
|
+
t.dri?.resolved?.id,
|
|
409
|
+
...(Array.isArray(t.assigneeAgentIds) ? t.assigneeAgentIds : []),
|
|
410
|
+
...(Array.isArray(t.assigneeUserIds) ? t.assigneeUserIds : []),
|
|
411
|
+
t.economics?.confirmedBy,
|
|
412
|
+
resolvedBy?.userId,
|
|
413
|
+
resolvedBy?.agentId,
|
|
414
|
+
];
|
|
415
|
+
const principalNames = await (0, principal_display_1.resolvePrincipalNames)(principalIds, {
|
|
416
|
+
spaceId: t.spaceId ?? null,
|
|
417
|
+
});
|
|
355
418
|
this.log(`ID: ${t.id ?? t._id ?? '-'}`);
|
|
356
419
|
this.log(`Ref: ${t.identifier ?? (t.taskNumber ? `#${t.taskNumber}` : '-')}`);
|
|
357
420
|
this.log(`Title: ${t.title ?? '-'}`);
|
|
@@ -368,25 +431,12 @@ class TasksShow extends base_command_1.BaseCommand {
|
|
|
368
431
|
* Closing is the actor's call — a Task may be `done` with work still
|
|
369
432
|
* outstanding, and `resolution.closure` is where the server recorded what
|
|
370
433
|
* it stood on at close. Show it so a bare "done" never reads as "clean."
|
|
434
|
+
* The closure sentences share the `tasks move` receipt's renderer, so the
|
|
435
|
+
* two cannot disagree; the reason and the closer are printed for every
|
|
436
|
+
* resolved Task (OSK-16475).
|
|
371
437
|
*/
|
|
372
|
-
const
|
|
373
|
-
|
|
374
|
-
* Same renderer as the `tasks move` receipt, so the two cannot disagree
|
|
375
|
-
* about a Task they are both describing.
|
|
376
|
-
*
|
|
377
|
-
* This copy showed an owner's ordinary close as an override:
|
|
378
|
-
* `TASK_RESULT_REVIEW_REQUIRED` lands in `blockers` whenever the policy is
|
|
379
|
-
* unsatisfied — including when the owner, who is not bound by the Review
|
|
380
|
-
* they declared, closes it themselves — and this rendered it identically to
|
|
381
|
-
* a genuine forced close. So the only read surface for "was this gate
|
|
382
|
-
* overridden?" could not answer the question.
|
|
383
|
-
*/
|
|
384
|
-
if (resolution?.closure) {
|
|
385
|
-
const sentences = (0, task_closure_1.closureSnapshotLines)(resolution.closure);
|
|
386
|
-
if (sentences.length > 0) {
|
|
387
|
-
this.log(`Resolution: ${resolution.kind ?? '-'} — ${sentences.join(' ')}`);
|
|
388
|
-
}
|
|
389
|
-
}
|
|
438
|
+
for (const line of resolutionLines(t, principalNames))
|
|
439
|
+
this.log(line);
|
|
390
440
|
/*
|
|
391
441
|
* A Result orphaned by a spec edit is not the same as no Result.
|
|
392
442
|
*
|
|
@@ -519,18 +569,6 @@ class TasksShow extends base_command_1.BaseCommand {
|
|
|
519
569
|
}
|
|
520
570
|
}
|
|
521
571
|
this.log(`Labels: ${labelsLine(labelIds, labelNames)}`);
|
|
522
|
-
// Principals print as names, not ObjectIds — same rule as labels above: a
|
|
523
|
-
// roster that cannot be read prints ids rather than failing the command.
|
|
524
|
-
const principalIds = [
|
|
525
|
-
t.author,
|
|
526
|
-
t.dri?.resolved?.id,
|
|
527
|
-
...(Array.isArray(t.assigneeAgentIds) ? t.assigneeAgentIds : []),
|
|
528
|
-
...(Array.isArray(t.assigneeUserIds) ? t.assigneeUserIds : []),
|
|
529
|
-
t.economics?.confirmedBy,
|
|
530
|
-
];
|
|
531
|
-
const principalNames = await (0, principal_display_1.resolvePrincipalNames)(principalIds, {
|
|
532
|
-
spaceId: t.spaceId ?? null,
|
|
533
|
-
});
|
|
534
572
|
this.log(`Author: ${t.authorDisplayName || (0, principal_display_1.displayPrincipal)(t.author, principalNames)}`);
|
|
535
573
|
const dri = t.dri;
|
|
536
574
|
if (dri?.resolved) {
|
|
@@ -8,6 +8,7 @@ export default class TasksStart extends BaseCommand {
|
|
|
8
8
|
};
|
|
9
9
|
static flags: {
|
|
10
10
|
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
11
|
+
'dry-run': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
11
12
|
task: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
12
13
|
skill: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
13
14
|
branch: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
@@ -7,6 +7,7 @@ const data_provider_1 = require("@skrr-ai/data-provider");
|
|
|
7
7
|
const base_command_1 = require("../../base-command");
|
|
8
8
|
const task_resolver_1 = require("../../lib/task-resolver");
|
|
9
9
|
const git_task_1 = require("../../lib/git-task");
|
|
10
|
+
const task_admission_1 = require("../../lib/task-admission");
|
|
10
11
|
class TasksStart extends base_command_1.BaseCommand {
|
|
11
12
|
static description = 'Start execution of a task: its assignee agent runs it in a new conversation + session. ' +
|
|
12
13
|
'Alias: tasks execute';
|
|
@@ -20,6 +21,7 @@ class TasksStart extends base_command_1.BaseCommand {
|
|
|
20
21
|
'<%= config.bin %> tasks start <task-id> --skill <skill-id>',
|
|
21
22
|
'<%= config.bin %> tasks start OSK-123 --branch',
|
|
22
23
|
'<%= config.bin %> tasks start <task-id> --json',
|
|
24
|
+
'<%= config.bin %> tasks start <task-id> --dry-run --json',
|
|
23
25
|
];
|
|
24
26
|
static args = {
|
|
25
27
|
id: core_1.Args.string({
|
|
@@ -30,6 +32,7 @@ class TasksStart extends base_command_1.BaseCommand {
|
|
|
30
32
|
};
|
|
31
33
|
static flags = {
|
|
32
34
|
json: core_1.Flags.boolean({ description: 'Output as JSON' }),
|
|
35
|
+
'dry-run': core_1.Flags.boolean({ description: 'Preview effective unattended execution prerequisites without creating a Run or checking out a branch', exclusive: ['branch'] }),
|
|
33
36
|
task: core_1.Flags.string({
|
|
34
37
|
description: 'Task ID; overrides daemon runtime context',
|
|
35
38
|
}),
|
|
@@ -57,6 +60,36 @@ class TasksStart extends base_command_1.BaseCommand {
|
|
|
57
60
|
details: { suggestion: failure.suggestion, context: failure.details },
|
|
58
61
|
});
|
|
59
62
|
}
|
|
63
|
+
if (flags['dry-run']) {
|
|
64
|
+
if (flags.branch)
|
|
65
|
+
this.error('--dry-run cannot check out a branch; omit --branch.', { exit: 2 });
|
|
66
|
+
let preview;
|
|
67
|
+
try {
|
|
68
|
+
// A separate route is intentional: an older /start silently ignores
|
|
69
|
+
// unknown request fields. A dryRun flag there could start real work.
|
|
70
|
+
preview = await data_provider_1.dataService.previewTaskStart(taskIdentity.id, flags.skill ? { skillId: flags.skill } : undefined);
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
this.handleApiError(err, { subject: `Task ${taskIdentity.id} execution preview` });
|
|
74
|
+
}
|
|
75
|
+
if (!(0, task_admission_1.isAdmissionPreview)(preview)) {
|
|
76
|
+
this.failWithCliError({
|
|
77
|
+
message: 'The server did not return a confirmed execution preview. Update the server before using --dry-run.',
|
|
78
|
+
code: 'TASK_START_PREVIEW_UNSUPPORTED', exit: 2, retryable: false,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
if (flags.json)
|
|
82
|
+
this.printJsonResult(preview, { ok: preview.executionAdmission.state !== 'blocked' });
|
|
83
|
+
else {
|
|
84
|
+
this.log(`Execution preview for ${preview.taskId}:`);
|
|
85
|
+
for (const line of (0, task_admission_1.admissionLines)(preview.executionAdmission))
|
|
86
|
+
this.log(line);
|
|
87
|
+
this.log('No Run was created. Starting later rechecks current prerequisites.');
|
|
88
|
+
}
|
|
89
|
+
if (preview.executionAdmission.state === 'blocked')
|
|
90
|
+
this.exit(1);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
60
93
|
// Resolve once before asking the server to start. It makes a title or
|
|
61
94
|
// human-readable ref usable for branch naming, while UUID callers retain
|
|
62
95
|
// their existing one-request behavior when --branch is omitted.
|
|
@@ -137,6 +170,8 @@ class TasksStart extends base_command_1.BaseCommand {
|
|
|
137
170
|
this.log(`Started task ${taskId}${flags.skill ? ` with skill ${flags.skill}` : ''}`);
|
|
138
171
|
if (branch)
|
|
139
172
|
this.log(`${branch.created ? 'Created' : 'Checked out'} branch: ${branch.branch}`);
|
|
173
|
+
for (const line of (0, task_admission_1.admissionLines)(result.executionAdmission))
|
|
174
|
+
this.log(line);
|
|
140
175
|
this.log(`Conversation: ${result.conversationId}`);
|
|
141
176
|
this.log(`Session: ${result.sessionId}`);
|
|
142
177
|
for (const line of startFollowUpLines(this.config.bin, taskIdentity.id))
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const list_output_1 = require("../../../lib/list-output");
|
|
3
4
|
const core_1 = require("@oclif/core");
|
|
4
5
|
const data_provider_1 = require("@skrr-ai/data-provider");
|
|
5
6
|
const base_command_1 = require("../../../base-command");
|
|
@@ -25,7 +26,7 @@ class TasksTemplatesList extends base_command_1.BaseCommand {
|
|
|
25
26
|
this.handleApiError(err);
|
|
26
27
|
}
|
|
27
28
|
if (flags.json) {
|
|
28
|
-
this.
|
|
29
|
+
this.printJsonResult((0, list_output_1.listResult)(response));
|
|
29
30
|
return;
|
|
30
31
|
}
|
|
31
32
|
const items = response?.data ?? [];
|
|
@@ -6,6 +6,11 @@ import { BaseCommand } from '../../base-command';
|
|
|
6
6
|
* renders `details` with, so the two surfaces describe one entry the same way.
|
|
7
7
|
*/
|
|
8
8
|
export declare function withDetails(item: Record<string, unknown>): string;
|
|
9
|
+
/**
|
|
10
|
+
* Who, not just which kind: `human:<id> (via CLI credential)` (OSK-16621). A
|
|
11
|
+
* row written before channels existed renders as it always did.
|
|
12
|
+
*/
|
|
13
|
+
export declare function timelineActor(item: Record<string, unknown>): string;
|
|
9
14
|
export default class TasksTimeline extends BaseCommand {
|
|
10
15
|
static description: string;
|
|
11
16
|
static args: {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.withDetails = withDetails;
|
|
4
|
+
exports.timelineActor = timelineActor;
|
|
4
5
|
const core_1 = require("@oclif/core");
|
|
5
6
|
const data_provider_1 = require("@skrr-ai/data-provider");
|
|
6
7
|
const base_command_1 = require("../../base-command");
|
|
@@ -21,6 +22,13 @@ function withDetails(item) {
|
|
|
21
22
|
const details = (0, format_1.formatCell)(item.data ?? item.details, '');
|
|
22
23
|
return details ? `${preview} (${details})` : preview;
|
|
23
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Who, not just which kind: `human:<id> (via CLI credential)` (OSK-16621). A
|
|
27
|
+
* row written before channels existed renders as it always did.
|
|
28
|
+
*/
|
|
29
|
+
function timelineActor(item) {
|
|
30
|
+
return item.actor ? (0, data_provider_1.formatTaskPrincipal)(item.actor) : '-';
|
|
31
|
+
}
|
|
24
32
|
class TasksTimeline extends base_command_1.BaseCommand {
|
|
25
33
|
static description = 'Show the immutable multi-actor Task Activity timeline';
|
|
26
34
|
static args = {
|
|
@@ -67,7 +75,7 @@ class TasksTimeline extends base_command_1.BaseCommand {
|
|
|
67
75
|
.replace('T', ' ')
|
|
68
76
|
.slice(0, 19),
|
|
69
77
|
source: String(item.type ?? '-'),
|
|
70
|
-
actor:
|
|
78
|
+
actor: timelineActor(item),
|
|
71
79
|
// A lifecycle row's preview is the bare action, so `status_changed`
|
|
72
80
|
// appeared three times in a row without ever naming a status. The
|
|
73
81
|
// answer is in `details` (`status=blocked`), which `tasks activity`
|
|
@@ -5,7 +5,11 @@ const data_provider_1 = require("@skrr-ai/data-provider");
|
|
|
5
5
|
const base_command_1 = require("../../base-command");
|
|
6
6
|
const web_url_1 = require("../../lib/web-url");
|
|
7
7
|
class TasksUnschedule extends base_command_1.BaseCommand {
|
|
8
|
-
|
|
8
|
+
// Decision (OSK-15321, round 3): unschedule ENDS the series at this occurrence; it clears the
|
|
9
|
+
// time and the recurrence. Stopping without ending is `pause-schedule` (keeps the series,
|
|
10
|
+
// `resume-schedule` continues it). A series ended here by mistake is restored, settings and
|
|
11
|
+
// all, with `rearm-recurrence <the previous occurrence>`.
|
|
12
|
+
static description = 'Clear the schedule on a task and end its series here (no future fires). To stop without ending the series use pause-schedule; to restore an ended series run rearm-recurrence on the previous occurrence';
|
|
9
13
|
static examples = [
|
|
10
14
|
'<%= config.bin %> tasks unschedule <task-id>',
|
|
11
15
|
'<%= config.bin %> tasks unschedule <task-id> --json',
|
|
@@ -50,6 +50,7 @@ export default class TasksUpdate extends BaseCommand {
|
|
|
50
50
|
goal: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
51
51
|
cycle: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
52
52
|
space: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
53
|
+
unassigned: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
53
54
|
'assignee-agent': import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
54
55
|
'assignee-user': import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
55
56
|
'dri-agent': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
@@ -138,6 +138,9 @@ class TasksUpdate extends base_command_1.BaseCommand {
|
|
|
138
138
|
space: core_1.Flags.string({
|
|
139
139
|
description: 'Move task to a different space (for a project, use `tasks move --project`)',
|
|
140
140
|
}),
|
|
141
|
+
unassigned: core_1.Flags.boolean({
|
|
142
|
+
description: 'Clear all Agent and Human assignees, retaining executor intent unless explicitly changed. Overrides JSON assignment; does not start a Run.',
|
|
143
|
+
}),
|
|
141
144
|
'assignee-agent': core_1.Flags.string({
|
|
142
145
|
description: 'Replace assignee agents — id or name (repeatable)',
|
|
143
146
|
multiple: true,
|
|
@@ -153,7 +156,7 @@ class TasksUpdate extends base_command_1.BaseCommand {
|
|
|
153
156
|
description: 'Set explicit accountable human DRI; use --from-json null to clear',
|
|
154
157
|
}),
|
|
155
158
|
'execution-mode': core_1.Flags.string({
|
|
156
|
-
description: 'Set
|
|
159
|
+
description: 'Set executor intent independently of assignment; required when assigning both Humans and Agents',
|
|
157
160
|
options: ['agent', 'human'],
|
|
158
161
|
}),
|
|
159
162
|
'add-assignee-agent': core_1.Flags.string({
|
|
@@ -219,6 +222,15 @@ class TasksUpdate extends base_command_1.BaseCommand {
|
|
|
219
222
|
async run() {
|
|
220
223
|
this.requireAuth();
|
|
221
224
|
const { args, flags } = await this.parse(TasksUpdate);
|
|
225
|
+
this.setJsonOperation({ command: 'tasks:update', mode: 'execute' });
|
|
226
|
+
const assignmentError = (0, tasks_2.taskUnassignmentFlagError)(flags);
|
|
227
|
+
if (assignmentError)
|
|
228
|
+
this.failWithCliError({
|
|
229
|
+
message: assignmentError,
|
|
230
|
+
code: 'TASK_ASSIGNMENT_FLAG_CONFLICT',
|
|
231
|
+
exit: 2,
|
|
232
|
+
retryable: false,
|
|
233
|
+
});
|
|
222
234
|
// Default to {} so TS flow-analysis is satisfied — the catch calls this.error(), which throws.
|
|
223
235
|
let body = {};
|
|
224
236
|
try {
|
|
@@ -451,6 +463,7 @@ class TasksUpdate extends base_command_1.BaseCommand {
|
|
|
451
463
|
// for, so it never counts toward the "nothing to update" check below.
|
|
452
464
|
repairReleasePins: flags['repair-release-pins'] ? true : undefined,
|
|
453
465
|
});
|
|
466
|
+
(0, tasks_2.applyExplicitTaskUnassignment)(payload, flags.unassigned === true);
|
|
454
467
|
const payloadKeys = Object.keys(payload);
|
|
455
468
|
if (payload.driAgentId && payload.driUserId) {
|
|
456
469
|
this.failWithCliError({
|
|
@@ -494,6 +507,7 @@ class TasksUpdate extends base_command_1.BaseCommand {
|
|
|
494
507
|
// to the task's current space. Fetching the task is skipped entirely when
|
|
495
508
|
// every assignee entry is already a raw id — the overwhelmingly common
|
|
496
509
|
// scripted case — so this adds no round-trip to existing usage.
|
|
510
|
+
await this.resolveTaskResourceReferences(payload, { taskId: taskRef });
|
|
497
511
|
await this.resolveAssigneesInPayload(payload, {
|
|
498
512
|
resolveSpaceId: async () => {
|
|
499
513
|
try {
|
|
@@ -538,12 +552,31 @@ class TasksUpdate extends base_command_1.BaseCommand {
|
|
|
538
552
|
if (tagWarning)
|
|
539
553
|
this.warn(tagWarning);
|
|
540
554
|
if (flags.json) {
|
|
541
|
-
|
|
555
|
+
const row = updated;
|
|
556
|
+
this.printJsonOperation({
|
|
557
|
+
...(0, web_url_1.withTaskUrl)(this.cliConfig.baseURL, row),
|
|
558
|
+
assignmentPreview: (0, tasks_2.taskAssignmentPreview)(row),
|
|
559
|
+
}, {
|
|
560
|
+
resource: row.id ? { kind: 'task', id: String(row.id) } : null,
|
|
561
|
+
task: row.id ? { id: String(row.id) } : null,
|
|
562
|
+
});
|
|
542
563
|
return;
|
|
543
564
|
}
|
|
544
565
|
const t = updated;
|
|
545
566
|
const ref = t.identifier ?? (t.taskNumber ? `#${t.taskNumber}` : '');
|
|
546
|
-
|
|
567
|
+
const label = `${t.id ?? t._id ?? taskRef}${ref ? ` (${ref})` : ''}`;
|
|
568
|
+
// The server's own answer about the estimate (OSK-16476): a no-op says so, never "Updated".
|
|
569
|
+
const unchanged = (0, task_economics_1.estimateUnchangedLine)(payload.economics, t);
|
|
570
|
+
const onlyEstimate = payloadKeys.every((key) => key === 'economics' || payload[key] === undefined);
|
|
571
|
+
if (unchanged && onlyEstimate) {
|
|
572
|
+
this.log(`Task ${label}: ${unchanged}`);
|
|
573
|
+
return;
|
|
574
|
+
}
|
|
575
|
+
this.log(`Updated task ${label} — ${t.title ?? '(no title)'}`);
|
|
576
|
+
if (flags.unassigned)
|
|
577
|
+
this.log(`Executor intent: ${(0, tasks_2.taskAssignmentPreview)(t).executor.mode || 'unspecified'}; assignment: unassigned. No Run requested.`);
|
|
578
|
+
if (unchanged)
|
|
579
|
+
this.log(unchanged);
|
|
547
580
|
// `--yes` asserts the revocation; it does not erase that it happened.
|
|
548
581
|
// Report the cost after the write too, or the evidence is silently gone.
|
|
549
582
|
if (changesSpec && flags.yes && (settledSpecAssessments > 0 || acceptanceUnreadable)) {
|
|
@@ -118,6 +118,7 @@ class TasksUpdatesAdd extends base_command_1.BaseCommand {
|
|
|
118
118
|
json: core_1.Flags.boolean({ description: 'Output JSON' }),
|
|
119
119
|
};
|
|
120
120
|
async run() {
|
|
121
|
+
this.setJsonOperation({ command: 'tasks:updates:add', mode: 'execute' });
|
|
121
122
|
this.requireAuth();
|
|
122
123
|
const { args, flags } = await this.parse(TasksUpdatesAdd);
|
|
123
124
|
const task = (0, task_resolver_1.resolveTaskIdentity)({ positionalId: args.task, flagTask: flags.task });
|
|
@@ -190,7 +191,11 @@ class TasksUpdatesAdd extends base_command_1.BaseCommand {
|
|
|
190
191
|
this.handleApiError(error);
|
|
191
192
|
}
|
|
192
193
|
if (flags.json)
|
|
193
|
-
return this.
|
|
194
|
+
return this.printJsonOperation(result, {
|
|
195
|
+
resource: { kind: 'task_update', id: result?.update?.id },
|
|
196
|
+
task: { id: result?.update?.taskId },
|
|
197
|
+
...(typeof result?.idempotent === 'boolean' ? { replayed: result.idempotent } : {}),
|
|
198
|
+
});
|
|
194
199
|
// A replayed idempotency key answers the SAME stored record — say so,
|
|
195
200
|
// otherwise a retried write reads as a second write.
|
|
196
201
|
this.log(result?.idempotent
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const list_output_1 = require("../../../lib/list-output");
|
|
3
4
|
const core_1 = require("@oclif/core");
|
|
4
5
|
const data_provider_1 = require("@skrr-ai/data-provider");
|
|
5
6
|
const base_command_1 = require("../../../base-command");
|
|
@@ -44,7 +45,7 @@ class TasksUpdatesList extends base_command_1.BaseCommand {
|
|
|
44
45
|
this.handleApiError(error);
|
|
45
46
|
}
|
|
46
47
|
if (flags.json)
|
|
47
|
-
return this.
|
|
48
|
+
return this.printJsonResult((0, list_output_1.listResult)(result));
|
|
48
49
|
if (!result?.data.length)
|
|
49
50
|
return this.log('No Updates recorded.');
|
|
50
51
|
for (const update of result.data) {
|
|
@@ -7,6 +7,7 @@ export default class TasksUpsert extends BaseCommand {
|
|
|
7
7
|
'from-json': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
8
8
|
'external-key': import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
9
9
|
'default-agent': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
10
|
+
unassigned: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
10
11
|
title: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
11
12
|
description: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
12
13
|
'description-format': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
@@ -25,6 +25,7 @@ class TasksUpsert extends base_command_1.BaseCommand {
|
|
|
25
25
|
'default-agent': core_1.Flags.string({
|
|
26
26
|
description: 'Override the automatic assignee for creates, or fill an unassigned existing match. Use "auto" to inherit the space lead agent.',
|
|
27
27
|
}),
|
|
28
|
+
unassigned: core_1.Flags.boolean({ description: 'Explicitly clear both assignee kinds, suppressing automatic defaults while retaining executor intent.', exclusive: ['default-agent', 'assignee-agent', 'assignee-user'] }),
|
|
28
29
|
title: core_1.Flags.string({ description: 'Task title (required when creating)' }),
|
|
29
30
|
description: core_1.Flags.string({ description: 'Task description' }),
|
|
30
31
|
'description-format': core_1.Flags.string({
|
|
@@ -66,6 +67,10 @@ class TasksUpsert extends base_command_1.BaseCommand {
|
|
|
66
67
|
async run() {
|
|
67
68
|
this.requireAuth();
|
|
68
69
|
const { flags } = await this.parse(TasksUpsert);
|
|
70
|
+
this.setJsonOperation({ command: 'tasks:upsert', mode: 'execute' });
|
|
71
|
+
const unassignmentError = (0, tasks_1.taskUnassignmentFlagError)(flags);
|
|
72
|
+
if (unassignmentError)
|
|
73
|
+
this.failWithCliError({ message: unassignmentError, code: 'TASK_UNASSIGNED_CONFLICT', exit: 2, retryable: false });
|
|
69
74
|
let body = {};
|
|
70
75
|
try {
|
|
71
76
|
body = await (0, prompt_1.readJsonBody)(flags['from-json']);
|
|
@@ -92,6 +97,7 @@ class TasksUpsert extends base_command_1.BaseCommand {
|
|
|
92
97
|
});
|
|
93
98
|
}
|
|
94
99
|
let scope;
|
|
100
|
+
await this.resolveTaskResourceReferences(payload);
|
|
95
101
|
try {
|
|
96
102
|
scope = await (0, tasks_1.resolveTaskCreateScope)(payload);
|
|
97
103
|
}
|
|
@@ -219,10 +225,11 @@ class TasksUpsert extends base_command_1.BaseCommand {
|
|
|
219
225
|
externalKey,
|
|
220
226
|
defaultAgent: defaultAgentResolution,
|
|
221
227
|
task,
|
|
228
|
+
assignmentPreview: (0, tasks_1.taskAssignmentPreview)(task),
|
|
222
229
|
url: (0, web_url_1.taskUrlFrom)(this.cliConfig.baseURL, task),
|
|
223
230
|
};
|
|
224
231
|
if (flags.json) {
|
|
225
|
-
this.
|
|
232
|
+
this.printJsonOperation(result, { resource: { kind: 'task', id: task?.id }, task: { id: task?.id } });
|
|
226
233
|
return;
|
|
227
234
|
}
|
|
228
235
|
this.log(`${capitalize(action)} task ${(0, tasks_1.formatTaskLabel)(task)}`);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const list_output_1 = require("../../lib/list-output");
|
|
3
4
|
const core_1 = require("@oclif/core");
|
|
4
5
|
const base_command_1 = require("../../base-command");
|
|
5
6
|
const api_fetch_1 = require("../../lib/api-fetch");
|
|
@@ -102,7 +103,7 @@ class TokenList extends base_command_1.BaseCommand {
|
|
|
102
103
|
// web session as if it were one.
|
|
103
104
|
const sessions = allSessions.filter((session) => !flags.kind || session.kind === flags.kind);
|
|
104
105
|
if (flags.json) {
|
|
105
|
-
return this.
|
|
106
|
+
return this.printJsonResult((0, list_output_1.listResult)({ sessions, count: sessions.length, hasMore }, 'sessions'));
|
|
106
107
|
}
|
|
107
108
|
if (!sessions.length && !hasMore) {
|
|
108
109
|
return this.log(flags.kind ? 'No matching active sessions.' : 'No active sessions.');
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const list_output_1 = require("../../lib/list-output");
|
|
3
4
|
const core_1 = require("@oclif/core");
|
|
4
5
|
const base_command_1 = require("../../base-command");
|
|
5
6
|
const access_tokens_1 = require("../../lib/access-tokens");
|
|
@@ -28,7 +29,7 @@ class TokensList extends base_command_1.BaseCommand {
|
|
|
28
29
|
}
|
|
29
30
|
const shown = flags.all ? tokens : tokens.filter((t) => t.state === 'active');
|
|
30
31
|
if (flags.json) {
|
|
31
|
-
this.
|
|
32
|
+
this.printJsonResult((0, list_output_1.listResult)({ accessTokens: shown }, 'accessTokens'));
|
|
32
33
|
return;
|
|
33
34
|
}
|
|
34
35
|
if (shown.length === 0) {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const list_output_1 = require("../../lib/list-output");
|
|
3
4
|
const core_1 = require("@oclif/core");
|
|
4
5
|
const data_provider_1 = require("@skrr-ai/data-provider");
|
|
5
6
|
const base_command_1 = require("../../base-command");
|
|
@@ -41,11 +42,12 @@ class TonesList extends base_command_1.BaseCommand {
|
|
|
41
42
|
: library.presets.filter((preset) => !flags.family || preset.family === flags.family);
|
|
42
43
|
const custom = flags.presets || flags.family ? [] : library.custom;
|
|
43
44
|
if (flags.json) {
|
|
44
|
-
this.
|
|
45
|
+
this.printJsonResult((0, list_output_1.listResult)({
|
|
46
|
+
data: [...presets, ...custom].map(tone_input_1.summarizeToneForList),
|
|
45
47
|
presets: presets.map(tone_input_1.summarizeToneForList),
|
|
46
48
|
custom: custom.map(tone_input_1.summarizeToneForList),
|
|
47
49
|
defaultToneId: library.defaultToneId ?? null,
|
|
48
|
-
}
|
|
50
|
+
}));
|
|
49
51
|
return;
|
|
50
52
|
}
|
|
51
53
|
const rows = [...presets, ...custom].map((tone) => ({
|
|
@@ -25,17 +25,25 @@ class TriggersAudit extends base_command_1.BaseCommand {
|
|
|
25
25
|
agent: core_1.Flags.string({ description: 'Agent ID filter for owner-wide audit history' }),
|
|
26
26
|
scope: core_1.Flags.string({ description: 'Scope kind filter for owner-wide audit history' }),
|
|
27
27
|
outcome: core_1.Flags.string({
|
|
28
|
-
description: 'Outcome filter
|
|
28
|
+
description: 'Outcome filter (succeeded, failed, skipped, incomplete, capped, ...); an unknown value is refused with the full list',
|
|
29
29
|
}),
|
|
30
30
|
source: core_1.Flags.string({
|
|
31
|
-
description: 'Source filter
|
|
31
|
+
description: 'Source filter (schedule, once, event, manual, webhook, replay, ...); an unknown value is refused with the full list',
|
|
32
32
|
}),
|
|
33
33
|
};
|
|
34
34
|
async run() {
|
|
35
35
|
this.requireAuth();
|
|
36
36
|
const { args, flags } = await this.parse(TriggersAudit);
|
|
37
37
|
const triggerId = args.id ?? flags.trigger;
|
|
38
|
-
|
|
38
|
+
// The per-trigger route takes no filters. A filter passed with a trigger id used to be
|
|
39
|
+
// dropped without a word, so `--outcome failed` listed succeeded rows and exited 0 (OSK-16474).
|
|
40
|
+
// A filter now always reaches the filtered history, narrowed to that trigger; that history
|
|
41
|
+
// covers triggers you own, which is said out loud rather than discovered.
|
|
42
|
+
const filtered = [flags.outcome, flags.source, flags.scope, flags.agent].some((value) => value !== undefined);
|
|
43
|
+
if (triggerId && filtered && !flags.json) {
|
|
44
|
+
this.warn('Filters read the fire history of triggers you own: a trigger shared with you but owned by someone else lists no rows here (omit the filters to read its own audit).');
|
|
45
|
+
}
|
|
46
|
+
const path = triggerId && !filtered
|
|
39
47
|
? (0, triggers_1.withQuery)(`/api/triggers/${encodeURIComponent(triggerId)}/audit`, {
|
|
40
48
|
limit: flags.limit,
|
|
41
49
|
before: flags.before,
|
|
@@ -47,6 +55,7 @@ class TriggersAudit extends base_command_1.BaseCommand {
|
|
|
47
55
|
agentId: flags.agent,
|
|
48
56
|
outcome: flags.outcome,
|
|
49
57
|
source: flags.source,
|
|
58
|
+
...(triggerId ? { triggerId } : {}),
|
|
50
59
|
});
|
|
51
60
|
let response;
|
|
52
61
|
try {
|
|
@@ -99,7 +99,7 @@ class TriggersCreate extends base_command_1.BaseCommand {
|
|
|
99
99
|
description: 'ISO-8601 datetime after which a schedule stops firing',
|
|
100
100
|
}),
|
|
101
101
|
'stale-catchup-ms': core_1.Flags.integer({
|
|
102
|
-
description: 'How late a missed occurrence may still run, in ms (
|
|
102
|
+
description: 'How late a missed occurrence may still run, in ms, from 1000 (1 second) to 31622400000 (366 days). After downtime, an occurrence more than this overdue is skipped rather than run late, and the schedule moves to its next future slot. Unset: 3600000 (1 hour).',
|
|
103
103
|
}),
|
|
104
104
|
at: core_1.Flags.string({
|
|
105
105
|
description: 'ISO-8601 datetime for once triggers. --next-run-at is also accepted with --kind once for backwards compatibility.',
|
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import { BaseCommand } from '../../base-command';
|
|
2
|
+
/**
|
|
3
|
+
* The text rendering of one fire. `reason` is the typed code and `errorMessage` the sentence a
|
|
4
|
+
* person reads; the view printed whichever came first, so a fire that resolved nothing showed
|
|
5
|
+
* only `Reason: no_waiting_step` and its sentence ("No step in this Space was waiting on that
|
|
6
|
+
* event key.") was JSON-only (OSK-16474). Both are shown now when both exist.
|
|
7
|
+
*/
|
|
8
|
+
export declare function describeFireAuditDetail(detail: Record<string, unknown>, fireId: string, triggerId: string): string[];
|
|
2
9
|
export default class TriggersFireDetail extends BaseCommand {
|
|
3
10
|
static description: string;
|
|
4
11
|
static examples: string[];
|