@skrr-ai/cli 0.1.110 → 0.1.113
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 +31 -3
- package/dist/base-command.js +136 -22
- 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/create.d.ts +3 -1
- package/dist/commands/agents/create.js +36 -3
- 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/list.js +2 -1
- 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/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 +37 -0
- package/dist/commands/followups/plans/example.d.ts +6 -0
- package/dist/commands/followups/plans/example.js +12 -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 +14 -0
- package/dist/commands/followups/plans/revise.js +38 -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/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/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/triggers/list.js +2 -1
- 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 +3 -7
- 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 +97 -4
- 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/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.js +17 -11
- 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/update.d.ts +1 -0
- package/dist/commands/tasks/update.js +25 -2
- 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/list.js +2 -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/list.js +3 -2
- package/dist/commands/workspaces/members.d.ts +1 -0
- package/dist/commands/workspaces/members.js +5 -2
- 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/commitments.d.ts +44 -3
- package/dist/lib/commitments.js +107 -9
- package/dist/lib/compasses.d.ts +4 -0
- package/dist/lib/compasses.js +11 -0
- package/dist/lib/daemon-setup.js +7 -7
- package/dist/lib/daemonHandoff.js +3 -2
- package/dist/lib/dedicated-ssh.d.ts +2 -0
- package/dist/lib/dedicated-ssh.js +98 -28
- 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 +36 -9
- package/dist/lib/lookbackPlanHelp.d.ts +19 -0
- package/dist/lib/lookbackPlanHelp.js +27 -0
- package/dist/lib/lookbackPlans.d.ts +22 -0
- package/dist/lib/lookbackPlans.js +88 -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/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-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 +7 -0
- package/dist/lib/triggers.js +54 -4
- 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/workspaces.d.ts +11 -4
- package/dist/lib/workspaces.js +7 -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/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/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 +30 -0
- package/dist/node_modules/@skrr-ai/data-provider/index.js +25245 -18730
- package/docs/v1/README.md +1 -0
- package/docs/v1/lookback-plans.md +88 -0
- package/docs/v1/operations.md +52 -0
- package/docs/v1/space-search.md +19 -0
- package/oclif.manifest.json +4792 -477
- package/package.json +27 -3
package/bin/run.js
CHANGED
|
@@ -33,7 +33,21 @@ try {
|
|
|
33
33
|
fs.chmodSync(temporary, 0o600);
|
|
34
34
|
fs.renameSync(temporary, bootstrap);
|
|
35
35
|
}
|
|
36
|
-
require(bootstrap)
|
|
36
|
+
const updateRuntime = require(bootstrap);
|
|
37
|
+
const admissionDeadline = Date.now() + 60000;
|
|
38
|
+
while (true) {
|
|
39
|
+
try {
|
|
40
|
+
updateRuntime.registerSession(packageRoot, Math.max(0, admissionDeadline - Date.now()));
|
|
41
|
+
break;
|
|
42
|
+
} catch (error) {
|
|
43
|
+
// Protocol-1 bootstraps already cached outside node_modules can time
|
|
44
|
+
// out their one-second bakery lock while another reader enters. Retry
|
|
45
|
+
// through that same gate within the normal admission budget: never
|
|
46
|
+
// load package modules while npm may be replacing them.
|
|
47
|
+
if (error?.code !== 'CLI_UPDATE_BUSY' || Date.now() >= admissionDeadline) throw error;
|
|
48
|
+
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, 25);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
37
51
|
process.env.SKRR_CLI_UPDATE_SESSION_REGISTERED = String(process.pid);
|
|
38
52
|
} catch (error) {
|
|
39
53
|
if (error && error.code === 'CLI_UPDATE_BUSY') {
|
package/dist/base-command.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Command, Flags, type Interfaces } from '@oclif/core';
|
|
2
|
+
import { type CliOperationOptions } from './lib/json-output';
|
|
2
3
|
export { resolveProfileFromArgv } from './lib/keychain';
|
|
3
4
|
import { dataService } from '@skrr-ai/data-provider';
|
|
4
5
|
import { type WriteTarget } from './lib/write-target';
|
|
@@ -7,6 +8,7 @@ import { type CliConfig } from './lib/config';
|
|
|
7
8
|
import { type OutboxMethod } from './lib/outbox';
|
|
8
9
|
import { type CredentialProvenance, type ResolvedCredential } from './lib/credential-resolver';
|
|
9
10
|
import { type BrokerRefusalDescription } from './lib/daemonBrokerRefusal';
|
|
11
|
+
import { type TaskResourceReferenceCache } from './lib/task-resource-references';
|
|
10
12
|
import { type DefaultAgentResolution } from './lib/tasks';
|
|
11
13
|
export declare function assigneePayloadNeedsResolution(payload: Record<string, unknown>): boolean;
|
|
12
14
|
/**
|
|
@@ -79,6 +81,13 @@ export declare abstract class BaseCommand extends Command {
|
|
|
79
81
|
protected printJsonResult(value: unknown, options?: {
|
|
80
82
|
ok?: boolean;
|
|
81
83
|
}): void;
|
|
84
|
+
private jsonOperationContext?;
|
|
85
|
+
/** Opt in at the command boundary, including its existing structured errors. */
|
|
86
|
+
protected setJsonOperation(options: Partial<CliOperationOptions>): void;
|
|
87
|
+
/** Decorate an object when a command owns its own JSON/signal serializer. */
|
|
88
|
+
protected jsonOperationResult(value: unknown, options?: Partial<CliOperationOptions>): unknown;
|
|
89
|
+
protected printJsonOperation(value: unknown, options?: Partial<CliOperationOptions>): void;
|
|
90
|
+
private jsonOperationError;
|
|
82
91
|
protected cliConfig: CliConfig;
|
|
83
92
|
/**
|
|
84
93
|
* Resolved credential for this process. Populated in `init()` and
|
|
@@ -123,6 +132,12 @@ export declare abstract class BaseCommand extends Command {
|
|
|
123
132
|
* instead of the resolution being quietly wrong.
|
|
124
133
|
*/
|
|
125
134
|
static resolveSpaceFlag: boolean;
|
|
135
|
+
private taskResourceReferenceCache?;
|
|
136
|
+
protected resolveTaskResourceReferences(payload: Record<string, unknown>, options?: {
|
|
137
|
+
existingTask?: Record<string, unknown>;
|
|
138
|
+
taskId?: string;
|
|
139
|
+
cache?: TaskResourceReferenceCache;
|
|
140
|
+
}): Promise<void>;
|
|
126
141
|
/**
|
|
127
142
|
* Turn a space reference into a space id, or fail the command.
|
|
128
143
|
*
|
|
@@ -300,7 +315,9 @@ export declare abstract class BaseCommand extends Command {
|
|
|
300
315
|
* caller that cannot watch: it is checked HERE, before the first write, and a
|
|
301
316
|
* mismatch is a non-retryable usage error.
|
|
302
317
|
*/
|
|
303
|
-
protected assertWriteTarget(expected?: readonly string[]
|
|
318
|
+
protected assertWriteTarget(expected?: readonly string[], options?: {
|
|
319
|
+
preview?: boolean;
|
|
320
|
+
}): Promise<WriteTarget>;
|
|
304
321
|
/**
|
|
305
322
|
* Turn free-text assignee references ("frank", "frank@example.com", "me",
|
|
306
323
|
* or a raw id) into ids, failing the command if ANY of them can't be pinned
|
|
@@ -585,12 +602,23 @@ export declare function isTypedServerRefusal(body: Record<string, unknown> | nul
|
|
|
585
602
|
*/
|
|
586
603
|
export declare function isApplicationCodedUnavailable(status: number | undefined, body: Record<string, unknown> | null): boolean;
|
|
587
604
|
export declare function isRetryableFailure(status: number | undefined, body: Record<string, unknown> | null): boolean;
|
|
605
|
+
/**
|
|
606
|
+
* The human text of an API error body (OSK-16986). The server's error envelope guarantees
|
|
607
|
+
* `message`; the legacy `error` string and the nested `{ error: { message } }` (`/v1`) are read
|
|
608
|
+
* only for a server or a proxy that did not pass that boundary. Same order as
|
|
609
|
+
* `errorBodyMessage` in `@skrr-ai/data-provider`, kept here because the CLI's specs replace that
|
|
610
|
+
* package with partial mocks and this runs on every API failure.
|
|
611
|
+
*/
|
|
612
|
+
export declare function errorBodyMessage(body: unknown): string | undefined;
|
|
588
613
|
/**
|
|
589
614
|
* The `details` of a CLI error envelope, in ONE shape. The server's refusal body becomes the
|
|
590
615
|
* envelope's details; when that body carries its own `details` object (a typed refusal's
|
|
591
616
|
* findings, e.g. `signalableNodeKeys`), those fields are lifted to the same level instead of
|
|
592
|
-
* arriving as `error.details.details`, a depth no other error used (OSK-16494).
|
|
593
|
-
*
|
|
617
|
+
* arriving as `error.details.details`, a depth no other error used (OSK-16494).
|
|
618
|
+
*
|
|
619
|
+
* The human text is always `details.message` (OSK-16986): the server's error envelope guarantees
|
|
620
|
+
* it, and for an older server that wrote only `error` (or the nested `/v1` shape) it is filled
|
|
621
|
+
* from there, so no caller reads two places. A lifted `details.message` cannot replace it.
|
|
594
622
|
*/
|
|
595
623
|
export declare function envelopeDetails(body: Record<string, unknown> | null | undefined): unknown;
|
|
596
624
|
/**
|
package/dist/base-command.js
CHANGED
|
@@ -17,6 +17,7 @@ exports.describeDaemonScopedCredential = describeDaemonScopedCredential;
|
|
|
17
17
|
exports.isTypedServerRefusal = isTypedServerRefusal;
|
|
18
18
|
exports.isApplicationCodedUnavailable = isApplicationCodedUnavailable;
|
|
19
19
|
exports.isRetryableFailure = isRetryableFailure;
|
|
20
|
+
exports.errorBodyMessage = errorBodyMessage;
|
|
20
21
|
exports.envelopeDetails = envelopeDetails;
|
|
21
22
|
exports.retiredFlagHint = retiredFlagHint;
|
|
22
23
|
exports.parseErrorRemedy = parseErrorRemedy;
|
|
@@ -63,6 +64,7 @@ const step_up_1 = require("./lib/step-up");
|
|
|
63
64
|
const delegated_cli_1 = require("./lib/delegated-cli");
|
|
64
65
|
const dedicated_guest_1 = require("./lib/dedicated-guest");
|
|
65
66
|
const harness_context_1 = require("./lib/harness-context");
|
|
67
|
+
const task_resource_references_1 = require("./lib/task-resource-references");
|
|
66
68
|
const tasks_1 = require("./lib/tasks");
|
|
67
69
|
function assigneePayloadNeedsResolution(payload) {
|
|
68
70
|
const fields = [
|
|
@@ -199,6 +201,26 @@ class BaseCommand extends core_1.Command {
|
|
|
199
201
|
printJsonResult(value, options = {}) {
|
|
200
202
|
this.log(JSON.stringify((0, json_output_1.withOk)(value, options.ok ?? true), null, 2));
|
|
201
203
|
}
|
|
204
|
+
jsonOperationContext;
|
|
205
|
+
/** Opt in at the command boundary, including its existing structured errors. */
|
|
206
|
+
setJsonOperation(options) {
|
|
207
|
+
this.jsonOperationContext = { ...this.jsonOperationContext, ...options };
|
|
208
|
+
}
|
|
209
|
+
/** Decorate an object when a command owns its own JSON/signal serializer. */
|
|
210
|
+
jsonOperationResult(value, options = {}) {
|
|
211
|
+
return (0, json_output_1.withCliOperation)(value, {
|
|
212
|
+
command: this.id ?? '', mode: 'execute', outcome: 'succeeded',
|
|
213
|
+
...this.jsonOperationContext, ...options,
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
printJsonOperation(value, options = {}) {
|
|
217
|
+
this.printJsonResult(this.jsonOperationResult(value, options));
|
|
218
|
+
}
|
|
219
|
+
jsonOperationError(value) {
|
|
220
|
+
return this.jsonOperationContext
|
|
221
|
+
? this.jsonOperationResult(value, { outcome: 'failed', writeState: 'unknown' })
|
|
222
|
+
: value;
|
|
223
|
+
}
|
|
202
224
|
cliConfig;
|
|
203
225
|
/**
|
|
204
226
|
* Resolved credential for this process. Populated in `init()` and
|
|
@@ -616,6 +638,43 @@ class BaseCommand extends core_1.Command {
|
|
|
616
638
|
* instead of the resolution being quietly wrong.
|
|
617
639
|
*/
|
|
618
640
|
static resolveSpaceFlag = true;
|
|
641
|
+
taskResourceReferenceCache;
|
|
642
|
+
async resolveTaskResourceReferences(payload, options = {}) {
|
|
643
|
+
const cache = options.cache ?? (this.taskResourceReferenceCache ??= new Map());
|
|
644
|
+
let existingTask = options.existingTask;
|
|
645
|
+
// An ordinary UUID patch must keep its old request count. Only a readable
|
|
646
|
+
// scoped reference needs a current Task read to discover its Space.
|
|
647
|
+
const needsScope = ['projectId', 'goalId'].some(field => {
|
|
648
|
+
const value = payload[field];
|
|
649
|
+
return typeof value === 'string' && value.trim() &&
|
|
650
|
+
!/^[\da-f-]{36}$/i.test(value) && !/^[\da-f]{24}$/i.test(value);
|
|
651
|
+
});
|
|
652
|
+
try {
|
|
653
|
+
if (needsScope && !payload.spaceId && !existingTask && options.taskId) {
|
|
654
|
+
const key = `task:${options.taskId}`;
|
|
655
|
+
if (!cache.has(key))
|
|
656
|
+
cache.set(key, data_provider_1.dataService.getTask(options.taskId, { enrich: false }));
|
|
657
|
+
existingTask = await cache.get(key);
|
|
658
|
+
}
|
|
659
|
+
await (0, task_resource_references_1.resolveTaskResourceReferences)(payload, {
|
|
660
|
+
existingTask,
|
|
661
|
+
cache,
|
|
662
|
+
resolveSpace: value => this.resolveSpaceReference(value),
|
|
663
|
+
});
|
|
664
|
+
}
|
|
665
|
+
catch (error) {
|
|
666
|
+
if (error instanceof task_resource_references_1.TaskResourceReferenceError) {
|
|
667
|
+
this.failWithCliError({
|
|
668
|
+
message: error.message,
|
|
669
|
+
code: error.code,
|
|
670
|
+
exit: 2,
|
|
671
|
+
retryable: false,
|
|
672
|
+
details: { context: { candidates: error.candidates } },
|
|
673
|
+
});
|
|
674
|
+
}
|
|
675
|
+
this.handleApiError(error);
|
|
676
|
+
}
|
|
677
|
+
}
|
|
619
678
|
/**
|
|
620
679
|
* Turn a space reference into a space id, or fail the command.
|
|
621
680
|
*
|
|
@@ -650,7 +709,14 @@ class BaseCommand extends core_1.Command {
|
|
|
650
709
|
catch (err) {
|
|
651
710
|
this.handleApiError(err);
|
|
652
711
|
}
|
|
653
|
-
const
|
|
712
|
+
const envelope = response;
|
|
713
|
+
if (!Array.isArray(envelope?.data) || envelope?.has_more === true) {
|
|
714
|
+
this.failWithCliError({
|
|
715
|
+
message: 'The Space lookup is incomplete or unavailable, so a unique match cannot be established. Use a canonical Space id, or narrow the search with spaces list --q <name>.',
|
|
716
|
+
code: 'SPACE_REF_LOOKUP_INCOMPLETE', exit: 2, retryable: false,
|
|
717
|
+
});
|
|
718
|
+
}
|
|
719
|
+
const rows = envelope.data;
|
|
654
720
|
return rows.map(space_resolver_1.spaceRefFrom).filter((s) => s !== null);
|
|
655
721
|
};
|
|
656
722
|
let outcome = (0, space_resolver_1.resolveSpaceRef)(normalizedQuery, await load(false));
|
|
@@ -724,7 +790,7 @@ class BaseCommand extends core_1.Command {
|
|
|
724
790
|
// both contracts.
|
|
725
791
|
if (!(0, projects_1.looksLikeCanonicalProjectId)(projectRef)) {
|
|
726
792
|
this.failWithCliError({
|
|
727
|
-
message: 'Name the space: pass --space
|
|
793
|
+
message: 'Name the space: pass --space <space-id-or-ref>, or qualify the project ref as <space-id-or-ref>/<project-ref> (for example OSK-S-3/OSK-P-12).',
|
|
728
794
|
code: 'PROJECT_REF_REQUIRES_SPACE',
|
|
729
795
|
exit: 2,
|
|
730
796
|
retryable: false,
|
|
@@ -752,7 +818,7 @@ class BaseCommand extends core_1.Command {
|
|
|
752
818
|
// A server that predates the lookup. The caller's old remedy still
|
|
753
819
|
// works there, so the error names it rather than a server upgrade only.
|
|
754
820
|
this.failWithCliError({
|
|
755
|
-
message: 'This skrr server cannot look a project up by id — name the space: pass --space
|
|
821
|
+
message: 'This skrr server cannot look a project up by id — name the space: pass --space <space-id-or-ref>, or qualify the project as <space-id-or-ref>/<project-id>.',
|
|
756
822
|
code: 'PROJECT_REF_REQUIRES_SPACE',
|
|
757
823
|
exit: 2,
|
|
758
824
|
retryable: false,
|
|
@@ -824,7 +890,14 @@ class BaseCommand extends core_1.Command {
|
|
|
824
890
|
catch (err) {
|
|
825
891
|
this.handleApiError(err);
|
|
826
892
|
}
|
|
827
|
-
const
|
|
893
|
+
const envelope = response;
|
|
894
|
+
if (!Array.isArray(envelope?.data) || envelope?.has_more === true) {
|
|
895
|
+
this.failWithCliError({
|
|
896
|
+
message: 'The Task-title lookup is incomplete or unavailable, so a unique match cannot be established. Use a Task id/ref from tasks list --q <title>.',
|
|
897
|
+
code: 'TASK_REF_LOOKUP_INCOMPLETE', exit: 2, retryable: false,
|
|
898
|
+
});
|
|
899
|
+
}
|
|
900
|
+
const rows = envelope.data;
|
|
828
901
|
const candidates = rows.map(task_ref_resolver_1.taskRefFrom).filter((t) => t !== null);
|
|
829
902
|
const outcome = (0, task_ref_resolver_1.resolveTaskRef)(query, candidates);
|
|
830
903
|
if (outcome.ok)
|
|
@@ -1076,7 +1149,7 @@ class BaseCommand extends core_1.Command {
|
|
|
1076
1149
|
* caller that cannot watch: it is checked HERE, before the first write, and a
|
|
1077
1150
|
* mismatch is a non-retryable usage error.
|
|
1078
1151
|
*/
|
|
1079
|
-
async assertWriteTarget(expected) {
|
|
1152
|
+
async assertWriteTarget(expected, options = {}) {
|
|
1080
1153
|
const target = await this.describeWriteTarget();
|
|
1081
1154
|
const unmet = (0, write_target_1.firstUnmetExpectation)(target, expected);
|
|
1082
1155
|
if (unmet !== undefined) {
|
|
@@ -1093,7 +1166,7 @@ class BaseCommand extends core_1.Command {
|
|
|
1093
1166
|
});
|
|
1094
1167
|
}
|
|
1095
1168
|
if (process.stderr.isTTY) {
|
|
1096
|
-
process.stderr.write(
|
|
1169
|
+
process.stderr.write(`${options.preview ? 'Dry run target:' : 'Writing to'} ${(0, write_target_1.formatWriteTarget)(target)}\n`);
|
|
1097
1170
|
}
|
|
1098
1171
|
return target;
|
|
1099
1172
|
}
|
|
@@ -1225,7 +1298,7 @@ class BaseCommand extends core_1.Command {
|
|
|
1225
1298
|
const exit = err.exitCode ?? err.oclif?.exit ?? 1;
|
|
1226
1299
|
process.exitCode = exit;
|
|
1227
1300
|
const details = detailsFromCaughtError(err) ?? httpBody;
|
|
1228
|
-
this.log(JSON.stringify({
|
|
1301
|
+
this.log(JSON.stringify(this.jsonOperationError({
|
|
1229
1302
|
ok: false,
|
|
1230
1303
|
error: {
|
|
1231
1304
|
code: err.code ?? parseCliErrorCode(err),
|
|
@@ -1236,7 +1309,7 @@ class BaseCommand extends core_1.Command {
|
|
|
1236
1309
|
...parseErrorRemedy(err, this.id, this.config?.bin),
|
|
1237
1310
|
...(details ? { details } : {}),
|
|
1238
1311
|
},
|
|
1239
|
-
}, null, 2));
|
|
1312
|
+
}), null, 2));
|
|
1240
1313
|
return;
|
|
1241
1314
|
}
|
|
1242
1315
|
return super.catch(err);
|
|
@@ -1310,7 +1383,9 @@ class BaseCommand extends core_1.Command {
|
|
|
1310
1383
|
const body = parseErrorBody(e.body);
|
|
1311
1384
|
const bodyCode = stringProp(body, 'code') || stringProp(body, 'errorType');
|
|
1312
1385
|
// A body path the person never typed is read back as the flag that wrote it (OSK-15313).
|
|
1313
|
-
|
|
1386
|
+
// The server answers every error with `message` (OSK-16986); `errorBodyMessage` keeps the
|
|
1387
|
+
// older `error` string and the nested `/v1` shape as fallbacks for a server without it.
|
|
1388
|
+
const bodyMessage = (0, request_field_flags_1.translateRequestFieldPaths)(errorBodyMessage(body), this.requestFieldFlags);
|
|
1314
1389
|
// `requireAuth()` catches this before requests for normal commands, but
|
|
1315
1390
|
// keep the API-error check too: a handful of commands make a direct
|
|
1316
1391
|
// request and a supplied `--token` can bypass their normal preflight.
|
|
@@ -1434,7 +1509,7 @@ class BaseCommand extends core_1.Command {
|
|
|
1434
1509
|
// latched refresh refusal names the half the reader can act on.
|
|
1435
1510
|
const refreshRefusal = presentedCiToken || presentedPat
|
|
1436
1511
|
? null
|
|
1437
|
-
: (0, auth_failure_1.describeRefreshRefusal)(readRefreshRefusal(), {
|
|
1512
|
+
: (0, auth_failure_1.describeRefreshRefusal)((0, auth_failure_1.refusalFromResponse)(body, readRefreshRefusal()), {
|
|
1438
1513
|
bin: this.config.bin,
|
|
1439
1514
|
cliId: this.cliConfig ? (0, cli_id_1.resolveCliId)(this.cliConfig) : undefined,
|
|
1440
1515
|
});
|
|
@@ -1808,7 +1883,7 @@ class BaseCommand extends core_1.Command {
|
|
|
1808
1883
|
// that. Lead with the sign-in, name the refused refresh when one is latched,
|
|
1809
1884
|
// and give the order the fix has to happen in: sign in, THEN replay.
|
|
1810
1885
|
if (e.status === 401) {
|
|
1811
|
-
const refusal = (0, auth_failure_1.describeRefreshRefusal)(readRefreshRefusal(), {
|
|
1886
|
+
const refusal = (0, auth_failure_1.describeRefreshRefusal)((0, auth_failure_1.refusalFromResponse)(parseErrorBody(err.body), readRefreshRefusal()), {
|
|
1812
1887
|
bin: this.config.bin,
|
|
1813
1888
|
cliId: this.cliConfig ? (0, cli_id_1.resolveCliId)(this.cliConfig) : undefined,
|
|
1814
1889
|
});
|
|
@@ -1903,7 +1978,7 @@ class BaseCommand extends core_1.Command {
|
|
|
1903
1978
|
/** E6: the server's `Retry-After` for the refused call, when it was a 429. */
|
|
1904
1979
|
lastRetryAfterMs;
|
|
1905
1980
|
writeJsonCliError({ message, code, status, exit, retryable, details, requestId, }) {
|
|
1906
|
-
this.log(JSON.stringify({
|
|
1981
|
+
this.log(JSON.stringify(this.jsonOperationError({
|
|
1907
1982
|
ok: false,
|
|
1908
1983
|
error: {
|
|
1909
1984
|
code,
|
|
@@ -1922,7 +1997,7 @@ class BaseCommand extends core_1.Command {
|
|
|
1922
1997
|
...(this.lastRetryAfterMs !== undefined ? { retryAfterMs: this.lastRetryAfterMs } : {}),
|
|
1923
1998
|
...(details ? { details } : {}),
|
|
1924
1999
|
},
|
|
1925
|
-
}, null, 2));
|
|
2000
|
+
}), null, 2));
|
|
1926
2001
|
this.exit(exit);
|
|
1927
2002
|
}
|
|
1928
2003
|
/**
|
|
@@ -1988,7 +2063,13 @@ function parseGlobalFlags(argv) {
|
|
|
1988
2063
|
function readRefreshRefusal() {
|
|
1989
2064
|
try {
|
|
1990
2065
|
const state = (0, auth_core_1.needsReauthState)();
|
|
1991
|
-
return state.needed
|
|
2066
|
+
return state.needed
|
|
2067
|
+
? {
|
|
2068
|
+
reason: state.reason,
|
|
2069
|
+
message: state.message,
|
|
2070
|
+
...(state.revocationReason ? { revocationReason: state.revocationReason } : {}),
|
|
2071
|
+
}
|
|
2072
|
+
: null;
|
|
1992
2073
|
}
|
|
1993
2074
|
catch {
|
|
1994
2075
|
return null;
|
|
@@ -2022,7 +2103,7 @@ function apiRefusal(err) {
|
|
|
2022
2103
|
const body = parseErrorBody(err.body);
|
|
2023
2104
|
return {
|
|
2024
2105
|
code: stringProp(body, 'code') || stringProp(body, 'errorType'),
|
|
2025
|
-
message:
|
|
2106
|
+
message: errorBodyMessage(body),
|
|
2026
2107
|
...(body ? { body } : {}),
|
|
2027
2108
|
};
|
|
2028
2109
|
}
|
|
@@ -2460,21 +2541,45 @@ const RETIRED_FLAG_REPLACEMENTS = {
|
|
|
2460
2541
|
'`tasks deliverable add`.',
|
|
2461
2542
|
'--supersede': '--supersede is implicit: submitting again creates a new Result version.',
|
|
2462
2543
|
};
|
|
2544
|
+
/**
|
|
2545
|
+
* The human text of an API error body (OSK-16986). The server's error envelope guarantees
|
|
2546
|
+
* `message`; the legacy `error` string and the nested `{ error: { message } }` (`/v1`) are read
|
|
2547
|
+
* only for a server or a proxy that did not pass that boundary. Same order as
|
|
2548
|
+
* `errorBodyMessage` in `@skrr-ai/data-provider`, kept here because the CLI's specs replace that
|
|
2549
|
+
* package with partial mocks and this runs on every API failure.
|
|
2550
|
+
*/
|
|
2551
|
+
function errorBodyMessage(body) {
|
|
2552
|
+
if (!body || typeof body !== 'object' || Array.isArray(body))
|
|
2553
|
+
return undefined;
|
|
2554
|
+
const record = body;
|
|
2555
|
+
const text = (value) => typeof value === 'string' && value.trim() !== '' ? value : undefined;
|
|
2556
|
+
const nested = record.error && typeof record.error === 'object' && !Array.isArray(record.error)
|
|
2557
|
+
? record.error.message
|
|
2558
|
+
: undefined;
|
|
2559
|
+
return text(record.message) ?? text(record.error) ?? text(nested);
|
|
2560
|
+
}
|
|
2463
2561
|
/**
|
|
2464
2562
|
* The `details` of a CLI error envelope, in ONE shape. The server's refusal body becomes the
|
|
2465
2563
|
* envelope's details; when that body carries its own `details` object (a typed refusal's
|
|
2466
2564
|
* findings, e.g. `signalableNodeKeys`), those fields are lifted to the same level instead of
|
|
2467
|
-
* arriving as `error.details.details`, a depth no other error used (OSK-16494).
|
|
2468
|
-
*
|
|
2565
|
+
* arriving as `error.details.details`, a depth no other error used (OSK-16494).
|
|
2566
|
+
*
|
|
2567
|
+
* The human text is always `details.message` (OSK-16986): the server's error envelope guarantees
|
|
2568
|
+
* it, and for an older server that wrote only `error` (or the nested `/v1` shape) it is filled
|
|
2569
|
+
* from there, so no caller reads two places. A lifted `details.message` cannot replace it.
|
|
2469
2570
|
*/
|
|
2470
2571
|
function envelopeDetails(body) {
|
|
2471
2572
|
if (!body)
|
|
2472
2573
|
return undefined;
|
|
2574
|
+
const message = errorBodyMessage(body);
|
|
2473
2575
|
const nested = body.details;
|
|
2474
|
-
|
|
2475
|
-
|
|
2476
|
-
|
|
2477
|
-
|
|
2576
|
+
const lifted = !nested || typeof nested !== 'object' || Array.isArray(nested)
|
|
2577
|
+
? body
|
|
2578
|
+
: (() => {
|
|
2579
|
+
const { details: _nested, ...rest } = body;
|
|
2580
|
+
return { ...rest, ...nested };
|
|
2581
|
+
})();
|
|
2582
|
+
return message === undefined ? lifted : { ...lifted, message };
|
|
2478
2583
|
}
|
|
2479
2584
|
/**
|
|
2480
2585
|
* The commands those flags were retired FROM. The table was applied to every command, so a
|
|
@@ -2532,7 +2637,16 @@ function parseErrorRemedy(err, commandId, bin = 'skrr') {
|
|
|
2532
2637
|
`Pass --${flag} <value>. Run \`${helpCommand}\` for its description and accepted values.`,
|
|
2533
2638
|
};
|
|
2534
2639
|
}
|
|
2535
|
-
const nonexistent = /Nonexistent flag[s]?:?\s*(-{1,2}[\w-]+)
|
|
2640
|
+
const nonexistent = /Nonexistent flag[s]?:?\s*(-{1,2}[\w-]+)(?:[ =]([^\s,][^,\n]*))?/i.exec(message);
|
|
2641
|
+
if (nonexistent?.[2]) {
|
|
2642
|
+
// `"--outcome failed"` arrived as ONE argument: the flag may well exist, so
|
|
2643
|
+
// "remove it" would be wrong advice. Same case retiredFlagHint explains in text.
|
|
2644
|
+
return {
|
|
2645
|
+
flag: nonexistent[1].replace(/^-+/, ''),
|
|
2646
|
+
fix: suggestion ??
|
|
2647
|
+
`Pass the flag and its value as separate arguments: ${nonexistent[1]} ${nonexistent[2].trim()}`,
|
|
2648
|
+
};
|
|
2649
|
+
}
|
|
2536
2650
|
if (nonexistent) {
|
|
2537
2651
|
return {
|
|
2538
2652
|
flag: nonexistent[1].replace(/^-+/, ''),
|
|
@@ -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");
|
|
@@ -38,7 +39,7 @@ class ActionsList extends base_command_1.BaseCommand {
|
|
|
38
39
|
this.handleApiError(err);
|
|
39
40
|
}
|
|
40
41
|
if (flags.json) {
|
|
41
|
-
this.
|
|
42
|
+
this.printJsonResult((0, list_output_1.listResult)(response));
|
|
42
43
|
return;
|
|
43
44
|
}
|
|
44
45
|
(0, action_listings_1.renderActionListings)(response.data, (line) => this.log(line));
|
|
@@ -38,7 +38,7 @@ class AgendaTriggerCreate extends base_command_1.BaseCommand {
|
|
|
38
38
|
required: true,
|
|
39
39
|
}),
|
|
40
40
|
prompt: core_1.Flags.string({
|
|
41
|
-
description:
|
|
41
|
+
description: `The instruction the agent receives when the trigger fires (max ${data_provider_1.TRIGGER_PROMPT_TEMPLATE_MAX_CHARS} chars). Write in second person.`,
|
|
42
42
|
required: true,
|
|
43
43
|
}),
|
|
44
44
|
cron: core_1.Flags.string({
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.isUnconfirmedTurnCapture = isUnconfirmedTurnCapture;
|
|
4
|
+
const list_output_1 = require("../../../lib/list-output");
|
|
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");
|
|
@@ -55,7 +56,7 @@ class AgendaTriggerList extends base_command_1.BaseCommand {
|
|
|
55
56
|
this.handleApiError(err);
|
|
56
57
|
}
|
|
57
58
|
if (flags.json) {
|
|
58
|
-
this.
|
|
59
|
+
this.printJsonResult((0, list_output_1.listResult)(response));
|
|
59
60
|
return;
|
|
60
61
|
}
|
|
61
62
|
const r = response;
|
|
@@ -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");
|
|
@@ -24,7 +25,7 @@ class AgentGroupsList extends base_command_1.BaseCommand {
|
|
|
24
25
|
this.handleApiError(err);
|
|
25
26
|
}
|
|
26
27
|
if (flags.json) {
|
|
27
|
-
this.
|
|
28
|
+
this.printJsonResult((0, list_output_1.listResult)(response));
|
|
28
29
|
return;
|
|
29
30
|
}
|
|
30
31
|
// Defensive shape handling — accept either { data: [...] } or a plain array.
|
|
@@ -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 agent_actions_1 = require("../../../lib/agent-actions");
|
|
@@ -27,7 +28,7 @@ class AgentsActionsList extends base_command_1.BaseCommand {
|
|
|
27
28
|
this.handleApiError(err);
|
|
28
29
|
}
|
|
29
30
|
if (flags.json) {
|
|
30
|
-
this.
|
|
31
|
+
this.printJsonResult((0, list_output_1.listResult)(actions));
|
|
31
32
|
return;
|
|
32
33
|
}
|
|
33
34
|
(0, agent_actions_1.renderActions)(actions, (line) => this.log(line));
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const core_1 = require("@oclif/core");
|
|
4
4
|
const data_provider_1 = require("@skrr-ai/data-provider");
|
|
5
5
|
const base_command_1 = require("../../../base-command");
|
|
6
|
+
const agent_proactive_baseline_1 = require("../../../lib/agent-proactive-baseline");
|
|
6
7
|
/**
|
|
7
8
|
* `skrr agents always-on status <agent-id>` — read the composed generation-aware
|
|
8
9
|
* Always-On status envelope via the single control endpoint
|
|
@@ -62,6 +63,10 @@ class AgentsAlwaysOnStatus extends base_command_1.BaseCommand {
|
|
|
62
63
|
const reasons = (status.messaging.degradedReasons || []).join(', ') || 'unknown';
|
|
63
64
|
this.log(`Messaging: degraded (${reasons})`);
|
|
64
65
|
}
|
|
66
|
+
// Read-only setup facts: who wrote the policy/Compass, which system loops
|
|
67
|
+
// and watchers exist, and the command that repairs each gap.
|
|
68
|
+
for (const line of (0, agent_proactive_baseline_1.proactiveBaselineLines)(status.proactiveBaseline))
|
|
69
|
+
this.log(line);
|
|
65
70
|
}
|
|
66
71
|
}
|
|
67
72
|
exports.default = AgentsAlwaysOnStatus;
|
|
@@ -456,7 +456,10 @@ class AgentsChat extends base_command_1.BaseCommand {
|
|
|
456
456
|
* canonical scope at all. Naming that at launch is cheap; discovering it
|
|
457
457
|
* mid-run costs a session.
|
|
458
458
|
*/
|
|
459
|
-
|
|
459
|
+
// UUIDs identify Stores, versions, files and conversations too. Only a
|
|
460
|
+
// Task identifier or a UUID with an explicit Task label/URL/command earns
|
|
461
|
+
// this warning; a resource UUID alone cannot establish its kind.
|
|
462
|
+
static TASK_REF_IN_PROMPT = new RegExp(String.raw `\bOSK-\d+\b|(?:\btask(?:[\s_-]*(?:id|uuid))?\s*[:=]?\s*["'\x60]?|/tasks?/|\bskrr\s+tasks\s+(?:(?:updates|result|expectations|deliverable|comments|resume)\s+)?[a-z-]+\s+)[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b`, 'i');
|
|
460
463
|
/**
|
|
461
464
|
* `--local-skill` names → the references the server resolves, from the daemon
|
|
462
465
|
* that will run the turn. Any name that does not resolve stops the command:
|
|
@@ -71,7 +71,8 @@ export declare function unappliedPayloadKeys(sent: Record<string, unknown>, crea
|
|
|
71
71
|
* to claim a platform role that they had misspelled something.
|
|
72
72
|
*/
|
|
73
73
|
export declare function unappliedPayloadKeysWarning(keys: readonly string[]): string;
|
|
74
|
-
export declare function
|
|
74
|
+
export declare function initialAutonomyReceipt(created: unknown, requested: unknown): boolean | 'unconfirmed';
|
|
75
|
+
export declare function backgroundLoopLines(agentId: string, relationshipLoopsSkipped: boolean, initialAlwaysOn?: boolean | 'unconfirmed'): string[];
|
|
75
76
|
/**
|
|
76
77
|
* The flags `--from-spec` may be combined with: placement and identity for the
|
|
77
78
|
* NEW row, which a spec document deliberately cannot carry (where an agent runs
|
|
@@ -96,6 +97,7 @@ export default class AgentsCreate extends BaseCommand {
|
|
|
96
97
|
target: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
97
98
|
'next-target': import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
98
99
|
'working-directory': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
100
|
+
'initial-always-on': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
99
101
|
'no-relationship-loops': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
100
102
|
'default-permission-mode': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
101
103
|
tools: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|