@skrr-ai/cli 0.1.110 → 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 +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/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 +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/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/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/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 +25239 -18730
- package/docs/v1/operations.md +52 -0
- package/docs/v1/space-search.md +19 -0
- package/oclif.manifest.json +4719 -479
- package/package.json +23 -2
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("@oclif/core");
|
|
4
|
+
const data_provider_1 = require("@skrr-ai/data-provider");
|
|
5
|
+
const apps_command_1 = require("../../lib/apps-command");
|
|
6
|
+
class AppsPreview extends apps_command_1.AppsCommand {
|
|
7
|
+
static description = "Open a preview of an app's draft as it is now. It renders from the draft (no version is made, no grant is needed). It draws nothing: a preview is drawn when a person opens it (My Apps, a draft's Preview button), and that opens a session of its own. Opening one here REPLACES the draft's current preview, including one a person has open (that window stops reporting) and the log `apps logs` reads. In a preview, capability calls are answered from sandbox data kept in that person's browser; a where, orderBy or cursor, http.fetch, tools and services are not available, and each such refusal is written to the log `apps logs` reads.";
|
|
8
|
+
static examples = ['<%= config.bin %> apps preview habit-tracker'];
|
|
9
|
+
static args = {
|
|
10
|
+
app: core_1.Args.string({
|
|
11
|
+
description: 'The app id (app_...) or its slug',
|
|
12
|
+
required: true,
|
|
13
|
+
ignoreStdin: true,
|
|
14
|
+
}),
|
|
15
|
+
};
|
|
16
|
+
static flags = {
|
|
17
|
+
json: core_1.Flags.boolean({ description: 'Output the preview session as JSON' }),
|
|
18
|
+
};
|
|
19
|
+
async run() {
|
|
20
|
+
this.requireAuth();
|
|
21
|
+
const { args, flags } = await this.parse(AppsPreview);
|
|
22
|
+
const appId = await this.appId(args.app);
|
|
23
|
+
try {
|
|
24
|
+
const preview = await data_provider_1.dataService.createAppPreview(appId);
|
|
25
|
+
if (flags.json) {
|
|
26
|
+
this.printJsonResult(preview);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
this.log(`preview ${preview.previewId} (draft rev ${preview.draftRev}, until ${preview.expiresAt})`);
|
|
30
|
+
this.log(`check: ${preview.check.ok ? 'ok' : `${preview.check.summary.errors} error(s)`}, ${preview.check.summary.warnings} warning(s)`);
|
|
31
|
+
this.log('Writing more files makes this preview stale: open a new one.');
|
|
32
|
+
this.log("Nothing has drawn this preview, and opening it replaced the one there was, including one a person has open. A person's Preview in My Apps opens a session of its own; `apps logs` has content only after that, and only if the frame failed or was refused a call.");
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
this.failApps(error);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.default = AppsPreview;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AppsCommand } from '../../../lib/apps-command';
|
|
2
|
+
export default class AppsPublishPropose extends AppsCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
version: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
|
|
7
|
+
};
|
|
8
|
+
static flags: {
|
|
9
|
+
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
10
|
+
visibility: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
11
|
+
reason: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
12
|
+
};
|
|
13
|
+
run(): Promise<void>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("@oclif/core");
|
|
4
|
+
const data_provider_1 = require("@skrr-ai/data-provider");
|
|
5
|
+
const apps_command_1 = require("../../../lib/apps-command");
|
|
6
|
+
class AppsPublishPropose extends apps_command_1.AppsCommand {
|
|
7
|
+
static description = "Propose that a version be published. This records a request the app's owner answers; it publishes nothing, and the version stays private until a person with the right to publish acts on it.";
|
|
8
|
+
static examples = [
|
|
9
|
+
'<%= config.bin %> apps publish propose appv_... --visibility workspace --reason "ready for the team"',
|
|
10
|
+
];
|
|
11
|
+
static args = {
|
|
12
|
+
version: core_1.Args.string({
|
|
13
|
+
description: 'The version id (appv_...)',
|
|
14
|
+
required: true,
|
|
15
|
+
ignoreStdin: true,
|
|
16
|
+
}),
|
|
17
|
+
};
|
|
18
|
+
static flags = {
|
|
19
|
+
json: core_1.Flags.boolean({ description: 'Output the proposal as JSON' }),
|
|
20
|
+
visibility: core_1.Flags.string({
|
|
21
|
+
description: 'Where it would be published (workspace)',
|
|
22
|
+
required: true,
|
|
23
|
+
}),
|
|
24
|
+
reason: core_1.Flags.string({ description: 'Why, in a sentence (the owner reads it)' }),
|
|
25
|
+
};
|
|
26
|
+
async run() {
|
|
27
|
+
this.requireAuth();
|
|
28
|
+
const { args, flags } = await this.parse(AppsPublishPropose);
|
|
29
|
+
try {
|
|
30
|
+
const result = await data_provider_1.dataService.proposeAppPublish(args.version, {
|
|
31
|
+
visibility: flags.visibility,
|
|
32
|
+
...(flags.reason === undefined ? {} : { reason: flags.reason }),
|
|
33
|
+
});
|
|
34
|
+
if (flags.json) {
|
|
35
|
+
this.printJsonResult(result);
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
this.log(`request ${result.requestId} is waiting for the app's owner (${result.visibility}). Nothing is published until they act on it.`);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
this.failApps(error);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.default = AppsPublishPropose;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AppsCommand } from '../../lib/apps-command';
|
|
2
|
+
export default class AppsPull extends AppsCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
app: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
|
|
7
|
+
dir: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
|
|
8
|
+
};
|
|
9
|
+
static flags: {
|
|
10
|
+
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
11
|
+
force: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
12
|
+
};
|
|
13
|
+
run(): Promise<void>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("@oclif/core");
|
|
4
|
+
const data_provider_1 = require("@skrr-ai/data-provider");
|
|
5
|
+
const apps_command_1 = require("../../lib/apps-command");
|
|
6
|
+
const appsFs_1 = require("../../lib/appsFs");
|
|
7
|
+
class AppsPull extends apps_command_1.AppsCommand {
|
|
8
|
+
static description = "Write an app's draft into a local directory, so a harness can edit it with its own tools and check it offline. The server's paths are judged again here before anything is written; a symbolic link in the directory is refused, never written through. Prints the revision to name when you push it back.";
|
|
9
|
+
static examples = [
|
|
10
|
+
'<%= config.bin %> apps pull habit-tracker ./habit-tracker',
|
|
11
|
+
'<%= config.bin %> apps pull habit-tracker ./habit-tracker --force',
|
|
12
|
+
];
|
|
13
|
+
static args = {
|
|
14
|
+
app: core_1.Args.string({
|
|
15
|
+
description: 'The app id (app_...) or its slug',
|
|
16
|
+
required: true,
|
|
17
|
+
ignoreStdin: true,
|
|
18
|
+
}),
|
|
19
|
+
dir: core_1.Args.string({
|
|
20
|
+
description: 'The local directory (created if it does not exist)',
|
|
21
|
+
required: true,
|
|
22
|
+
ignoreStdin: true,
|
|
23
|
+
}),
|
|
24
|
+
};
|
|
25
|
+
static flags = {
|
|
26
|
+
json: core_1.Flags.boolean({ description: 'Output { rev, root, written } as JSON' }),
|
|
27
|
+
force: core_1.Flags.boolean({
|
|
28
|
+
description: 'Replace files that already exist (never a symbolic link)',
|
|
29
|
+
default: false,
|
|
30
|
+
}),
|
|
31
|
+
};
|
|
32
|
+
async run() {
|
|
33
|
+
this.requireAuth();
|
|
34
|
+
const { args, flags } = await this.parse(AppsPull);
|
|
35
|
+
const appId = await this.appId(args.app);
|
|
36
|
+
try {
|
|
37
|
+
const tree = await data_provider_1.dataService.getAppDraftTree(appId);
|
|
38
|
+
const result = (0, appsFs_1.writePackageDir)(args.dir, tree.files, { force: flags.force });
|
|
39
|
+
if (flags.json) {
|
|
40
|
+
this.printJsonResult({
|
|
41
|
+
appId,
|
|
42
|
+
rev: tree.rev,
|
|
43
|
+
root: result.root,
|
|
44
|
+
written: result.written,
|
|
45
|
+
});
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
this.log(`wrote ${result.written.length} file${result.written.length === 1 ? '' : 's'} to ${result.root}`);
|
|
49
|
+
this.log(`rev: ${tree.rev} (push it back with --expected-rev ${tree.rev})`);
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
this.failApps(error);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.default = AppsPull;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AppsCommand } from '../../lib/apps-command';
|
|
2
|
+
export default class AppsPush extends AppsCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
app: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
|
|
7
|
+
dir: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
|
|
8
|
+
};
|
|
9
|
+
static flags: {
|
|
10
|
+
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
11
|
+
'expected-rev': import("@oclif/core/lib/interfaces").OptionFlag<number, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
12
|
+
'dry-run': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
13
|
+
};
|
|
14
|
+
run(): Promise<void>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("@oclif/core");
|
|
4
|
+
const data_provider_1 = require("@skrr-ai/data-provider");
|
|
5
|
+
const apps_command_1 = require("../../lib/apps-command");
|
|
6
|
+
const appsFs_1 = require("../../lib/appsFs");
|
|
7
|
+
class AppsPush extends apps_command_1.AppsCommand {
|
|
8
|
+
static description = 'Replace an app\'s whole draft with a local directory. The directory is read without following symbolic links (a link is refused, naming it), anything starting with "." and node_modules are left out and listed, and the draft must still be at --expected-rev. Files in the draft that the directory does not have are removed.';
|
|
9
|
+
static examples = [
|
|
10
|
+
'<%= config.bin %> apps push habit-tracker ./habit-tracker --expected-rev 7',
|
|
11
|
+
'<%= config.bin %> apps push habit-tracker ./habit-tracker --expected-rev 7 --dry-run',
|
|
12
|
+
];
|
|
13
|
+
static args = {
|
|
14
|
+
app: core_1.Args.string({
|
|
15
|
+
description: 'The app id (app_...) or its slug',
|
|
16
|
+
required: true,
|
|
17
|
+
ignoreStdin: true,
|
|
18
|
+
}),
|
|
19
|
+
dir: core_1.Args.string({ description: 'The local directory', required: true, ignoreStdin: true }),
|
|
20
|
+
};
|
|
21
|
+
static flags = {
|
|
22
|
+
json: core_1.Flags.boolean({ description: 'Output { appId, rev, paths, removed, skipped } as JSON' }),
|
|
23
|
+
'expected-rev': core_1.Flags.integer({
|
|
24
|
+
description: 'The draft revision you last read (apps pull prints it)',
|
|
25
|
+
required: true,
|
|
26
|
+
min: 0,
|
|
27
|
+
}),
|
|
28
|
+
'dry-run': core_1.Flags.boolean({
|
|
29
|
+
description: 'Read and judge the directory, send nothing',
|
|
30
|
+
default: false,
|
|
31
|
+
}),
|
|
32
|
+
};
|
|
33
|
+
async run() {
|
|
34
|
+
this.requireAuth();
|
|
35
|
+
const { args, flags } = await this.parse(AppsPush);
|
|
36
|
+
const appId = await this.appId(args.app);
|
|
37
|
+
try {
|
|
38
|
+
const local = (0, appsFs_1.readPackageDir)(args.dir);
|
|
39
|
+
const files = local.files.map((file) => ({
|
|
40
|
+
path: file.path,
|
|
41
|
+
content: file.content,
|
|
42
|
+
}));
|
|
43
|
+
if (flags['dry-run']) {
|
|
44
|
+
const out = {
|
|
45
|
+
appId,
|
|
46
|
+
root: local.root,
|
|
47
|
+
files: files.map((file) => file.path),
|
|
48
|
+
skipped: local.skipped,
|
|
49
|
+
};
|
|
50
|
+
this.log(flags.json
|
|
51
|
+
? JSON.stringify(out, null, 2)
|
|
52
|
+
: `would send ${files.length} files from ${local.root}${local.skipped.length ? ` (left out: ${local.skipped.join(', ')})` : ''}`);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const result = await data_provider_1.dataService.replaceAppDraftTree(appId, {
|
|
56
|
+
expectedRev: flags['expected-rev'],
|
|
57
|
+
files,
|
|
58
|
+
});
|
|
59
|
+
if (flags.json) {
|
|
60
|
+
this.printJsonResult({ ...result, skipped: local.skipped });
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
this.log(`pushed ${result.paths.length} files (rev ${result.rev})`);
|
|
64
|
+
if (result.removed && result.removed.length > 0) {
|
|
65
|
+
this.log(`removed from the draft: ${result.removed.join(', ')}`);
|
|
66
|
+
}
|
|
67
|
+
if (local.skipped.length > 0)
|
|
68
|
+
this.log(`left out: ${local.skipped.join(', ')}`);
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
this.failApps(error);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.default = AppsPush;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AppsCommand } from '../../lib/apps-command';
|
|
2
|
+
export default class AppsReconsent extends AppsCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
installation: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
|
|
7
|
+
};
|
|
8
|
+
static flags: {
|
|
9
|
+
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
10
|
+
yes: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
11
|
+
};
|
|
12
|
+
run(): Promise<void>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("@oclif/core");
|
|
4
|
+
const data_provider_1 = require("@skrr-ai/data-provider");
|
|
5
|
+
const apps_command_1 = require("../../lib/apps-command");
|
|
6
|
+
const appInstallations_1 = require("../../lib/appInstallations");
|
|
7
|
+
class AppsReconsent extends apps_command_1.AppsCommand {
|
|
8
|
+
static description = 'Approve an installation again, for the version it runs now. A new version that asks for more (or an app whose code changed under an approval that is bound to it, or a job that was added or rewritten) stops until you do. Without --yes it shows what changed and approves nothing.';
|
|
9
|
+
static examples = [
|
|
10
|
+
'<%= config.bin %> apps reconsent appi_abc',
|
|
11
|
+
'<%= config.bin %> apps reconsent appi_abc --yes',
|
|
12
|
+
];
|
|
13
|
+
static args = {
|
|
14
|
+
installation: core_1.Args.string({
|
|
15
|
+
description: 'The installation id (appi_...)',
|
|
16
|
+
required: true,
|
|
17
|
+
ignoreStdin: true,
|
|
18
|
+
}),
|
|
19
|
+
};
|
|
20
|
+
static flags = {
|
|
21
|
+
json: core_1.Flags.boolean({ description: 'Output the installation as JSON' }),
|
|
22
|
+
yes: core_1.Flags.boolean({ description: 'Approve what the disclosure lists' }),
|
|
23
|
+
};
|
|
24
|
+
async run() {
|
|
25
|
+
this.requireAuth();
|
|
26
|
+
const { args, flags } = await this.parse(AppsReconsent);
|
|
27
|
+
try {
|
|
28
|
+
const current = await data_provider_1.dataService.getAppInstallation(args.installation);
|
|
29
|
+
const shown = await data_provider_1.dataService.getAppGrantDisclosure({
|
|
30
|
+
versionId: current.installation.versionId,
|
|
31
|
+
installationId: current.installation.id,
|
|
32
|
+
});
|
|
33
|
+
const disclosure = (0, data_provider_1.parseAppDisclosure)(shown.disclosure);
|
|
34
|
+
const lines = (0, appInstallations_1.formatDisclosure)(shown.disclosure, shown.facts);
|
|
35
|
+
if (!disclosure || !disclosure.bundleHash) {
|
|
36
|
+
return this.failWithCliError({
|
|
37
|
+
message: `${lines.join('\n')}\n→ Nothing was approved.`,
|
|
38
|
+
code: 'APP_DISCLOSURE_UNREADABLE',
|
|
39
|
+
exit: 1,
|
|
40
|
+
retryable: false,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
if (!flags.yes) {
|
|
44
|
+
return this.failWithCliError({
|
|
45
|
+
message: `${lines.join('\n')}\n→ Nothing was approved. To approve exactly this, run it again with --yes.`,
|
|
46
|
+
code: 'APP_CONSENT_REQUIRED',
|
|
47
|
+
exit: 2,
|
|
48
|
+
retryable: false,
|
|
49
|
+
details: { disclosure: shown.disclosure },
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
const result = await data_provider_1.dataService.reconsentAppInstallation(current.installation.id, {
|
|
53
|
+
versionId: current.installation.versionId,
|
|
54
|
+
bundleHash: disclosure.bundleHash,
|
|
55
|
+
});
|
|
56
|
+
if (flags.json) {
|
|
57
|
+
this.printJsonResult(result);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
this.log(`approved ${result.installation.id}: it is ${result.installation.availability} now`);
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
this.failInstallation(error);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.default = AppsReconsent;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { AppsCommand } from '../../lib/apps-command';
|
|
2
|
+
/**
|
|
3
|
+
* Report the app an installation runs. The Store's report, for an installed App: the same reasons, the same
|
|
4
|
+
* queue, and the same limits (a report on a version once, a `security` one while none is open). A report
|
|
5
|
+
* REMOVES nothing, pauses nothing and tells nobody: it is a row that a moderator reads.
|
|
6
|
+
*/
|
|
7
|
+
export default class AppsReport extends AppsCommand {
|
|
8
|
+
static description: string;
|
|
9
|
+
static examples: string[];
|
|
10
|
+
static args: {
|
|
11
|
+
installation: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
|
|
12
|
+
};
|
|
13
|
+
static flags: {
|
|
14
|
+
reason: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
15
|
+
description: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
16
|
+
version: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
17
|
+
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
18
|
+
};
|
|
19
|
+
run(): Promise<void>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("@oclif/core");
|
|
4
|
+
const data_provider_1 = require("@skrr-ai/data-provider");
|
|
5
|
+
const apps_command_1 = require("../../lib/apps-command");
|
|
6
|
+
/**
|
|
7
|
+
* Report the app an installation runs. The Store's report, for an installed App: the same reasons, the same
|
|
8
|
+
* queue, and the same limits (a report on a version once, a `security` one while none is open). A report
|
|
9
|
+
* REMOVES nothing, pauses nothing and tells nobody: it is a row that a moderator reads.
|
|
10
|
+
*/
|
|
11
|
+
class AppsReport extends apps_command_1.AppsCommand {
|
|
12
|
+
static description = 'Report the app an installation runs (use --reason security to report a vulnerability). A report is read by the people who moderate the Store; it does not pause, remove or tell anyone by itself.';
|
|
13
|
+
static examples = [
|
|
14
|
+
'<%= config.bin %> apps report appi_abc --reason broken --description "Shows a blank window"',
|
|
15
|
+
'<%= config.bin %> apps report appi_abc --reason security --description "Sends my notes to a host it never declared"',
|
|
16
|
+
];
|
|
17
|
+
static args = {
|
|
18
|
+
installation: core_1.Args.string({
|
|
19
|
+
description: 'The installation id (appi_...) of the app you are reporting',
|
|
20
|
+
required: true,
|
|
21
|
+
ignoreStdin: true,
|
|
22
|
+
}),
|
|
23
|
+
};
|
|
24
|
+
static flags = {
|
|
25
|
+
reason: core_1.Flags.string({
|
|
26
|
+
description: 'Why you are reporting it',
|
|
27
|
+
required: true,
|
|
28
|
+
options: data_provider_1.STORE_REPORT_REASONS.map((entry) => entry.value),
|
|
29
|
+
}),
|
|
30
|
+
description: core_1.Flags.string({ description: 'What happened (required for security reports)' }),
|
|
31
|
+
version: core_1.Flags.string({
|
|
32
|
+
description: 'The version the report is about (appv_...); it must be the one the installation runs',
|
|
33
|
+
}),
|
|
34
|
+
json: core_1.Flags.boolean({ description: 'Output the report as JSON' }),
|
|
35
|
+
};
|
|
36
|
+
async run() {
|
|
37
|
+
this.requireAuth();
|
|
38
|
+
const { args, flags } = await this.parse(AppsReport);
|
|
39
|
+
const reason = flags.reason;
|
|
40
|
+
if (reason === data_provider_1.STORE_SECURITY_REPORT_REASON && !flags.description?.trim()) {
|
|
41
|
+
this.error('A security report needs --description, so that whoever reads it can reproduce the problem.', { exit: 1 });
|
|
42
|
+
}
|
|
43
|
+
try {
|
|
44
|
+
const result = await data_provider_1.dataService.reportAppInstallation(args.installation, {
|
|
45
|
+
reason,
|
|
46
|
+
...(flags.description === undefined ? {} : { description: flags.description }),
|
|
47
|
+
...(flags.version === undefined ? {} : { versionId: flags.version }),
|
|
48
|
+
});
|
|
49
|
+
if (flags.json) {
|
|
50
|
+
this.printJsonResult(result);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
this.log(result.private
|
|
54
|
+
? `Security report ${result.reportId} sent privately about ${result.appId} (${result.versionLabel || result.versionId}).`
|
|
55
|
+
: `Report ${result.reportId} submitted about ${result.appId} (${result.versionLabel || result.versionId}).`);
|
|
56
|
+
this.log(`Follow it with: ${this.config.bin} store reports --agent ${result.appId}`);
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
this.failReport(error);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
exports.default = AppsReport;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { AppsCommand } from '../../lib/apps-command';
|
|
2
|
+
export default class AppsResume extends AppsCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
installation: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
|
|
7
|
+
};
|
|
8
|
+
static flags: {
|
|
9
|
+
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
10
|
+
};
|
|
11
|
+
run(): Promise<void>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("@oclif/core");
|
|
4
|
+
const data_provider_1 = require("@skrr-ai/data-provider");
|
|
5
|
+
const apps_command_1 = require("../../lib/apps-command");
|
|
6
|
+
const appInstallations_1 = require("../../lib/appInstallations");
|
|
7
|
+
class AppsResume extends apps_command_1.AppsCommand {
|
|
8
|
+
static description = 'Lift a pause. What it is afterwards is what its approval says about the version it runs: ready, or still needing your approval again if the version moved while it was paused.';
|
|
9
|
+
static examples = ['<%= config.bin %> apps resume appi_abc'];
|
|
10
|
+
static args = {
|
|
11
|
+
installation: core_1.Args.string({
|
|
12
|
+
description: 'The installation id (appi_...)',
|
|
13
|
+
required: true,
|
|
14
|
+
ignoreStdin: true,
|
|
15
|
+
}),
|
|
16
|
+
};
|
|
17
|
+
static flags = {
|
|
18
|
+
json: core_1.Flags.boolean({ description: 'Output the installation as JSON' }),
|
|
19
|
+
};
|
|
20
|
+
async run() {
|
|
21
|
+
this.requireAuth();
|
|
22
|
+
const { args, flags } = await this.parse(AppsResume);
|
|
23
|
+
try {
|
|
24
|
+
const result = await data_provider_1.dataService.resumeAppInstallation(args.installation);
|
|
25
|
+
if (flags.json) {
|
|
26
|
+
this.printJsonResult(result);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
this.log(`${result.installation.id} is ${(0, appInstallations_1.describeAvailability)(result.installation.availability)}`);
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
this.failInstallation(error);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.default = AppsResume;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AppsCommand } from '../../../lib/apps-command';
|
|
2
|
+
export default class AppsSettingsSet extends AppsCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static args: {
|
|
5
|
+
installation: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
|
|
6
|
+
};
|
|
7
|
+
static flags: {
|
|
8
|
+
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
9
|
+
file: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
10
|
+
yes: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
11
|
+
};
|
|
12
|
+
run(): Promise<void>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("@oclif/core");
|
|
4
|
+
const data_provider_1 = require("@skrr-ai/data-provider");
|
|
5
|
+
const apps_command_1 = require("../../../lib/apps-command");
|
|
6
|
+
const appSettings_1 = require("../../../lib/appSettings");
|
|
7
|
+
class AppsSettingsSet extends apps_command_1.AppsCommand {
|
|
8
|
+
static description = 'Replace installation settings from a JSON file. Without --yes, show resulting schedules and change nothing. Every write requires explicit human consent to the bundle and exact settings, and names the current version/settings/consent so concurrent edits are refused. Existing suspended or manually edited jobs keep their state.';
|
|
9
|
+
static args = { installation: core_1.Args.string({ required: true, ignoreStdin: true }) };
|
|
10
|
+
static flags = {
|
|
11
|
+
json: core_1.Flags.boolean(),
|
|
12
|
+
file: core_1.Flags.string({
|
|
13
|
+
required: true,
|
|
14
|
+
description: 'JSON settings record; omitted keys use manifest defaults. Never include secrets',
|
|
15
|
+
}),
|
|
16
|
+
yes: core_1.Flags.boolean({
|
|
17
|
+
description: 'Explicitly approve these settings and resulting schedules under your installer authority',
|
|
18
|
+
}),
|
|
19
|
+
};
|
|
20
|
+
async run() {
|
|
21
|
+
this.requireAuth();
|
|
22
|
+
const { args, flags } = await this.parse(AppsSettingsSet);
|
|
23
|
+
try {
|
|
24
|
+
const current = await data_provider_1.dataService.getAppInstallationSettings(args.installation);
|
|
25
|
+
const settings = (0, appSettings_1.readAppSettingsFile)(flags.file, current.configuration);
|
|
26
|
+
const lines = (0, appSettings_1.formatAppSettings)(current.configuration, settings, current.timezone);
|
|
27
|
+
if (!flags.yes)
|
|
28
|
+
return this.failWithCliError({
|
|
29
|
+
message: `${lines.join('\n')}\nNothing changed. Run again with --yes to approve exactly these settings.`,
|
|
30
|
+
code: 'APP_CONSENT_REQUIRED',
|
|
31
|
+
exit: 2,
|
|
32
|
+
retryable: false,
|
|
33
|
+
details: { settings, current },
|
|
34
|
+
});
|
|
35
|
+
if (!flags.json)
|
|
36
|
+
for (const line of lines)
|
|
37
|
+
this.logToStderr(line);
|
|
38
|
+
const result = await data_provider_1.dataService.putAppInstallationSettings(args.installation, {
|
|
39
|
+
settings,
|
|
40
|
+
expectedSettings: current.settings,
|
|
41
|
+
expectedVersionId: current.expectedVersionId,
|
|
42
|
+
expectedGrantedAt: current.expectedGrantedAt,
|
|
43
|
+
consent: { versionId: current.expectedVersionId, bundleHash: current.bundleHash, settings },
|
|
44
|
+
});
|
|
45
|
+
if (flags.json)
|
|
46
|
+
return this.printJsonResult(result);
|
|
47
|
+
this.log(`Saved settings for ${args.installation}. Schedule reconciliation was requested; use apps installations show to inspect job state.`);
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
this.failInstallation(error);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.default = AppsSettingsSet;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AppsCommand } from '../../../lib/apps-command';
|
|
2
|
+
export default class AppsSettingsShow extends AppsCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static args: {
|
|
5
|
+
installation: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
|
|
6
|
+
};
|
|
7
|
+
static flags: {
|
|
8
|
+
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
9
|
+
};
|
|
10
|
+
run(): Promise<void>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("@oclif/core");
|
|
4
|
+
const data_provider_1 = require("@skrr-ai/data-provider");
|
|
5
|
+
const apps_command_1 = require("../../../lib/apps-command");
|
|
6
|
+
class AppsSettingsShow extends apps_command_1.AppsCommand {
|
|
7
|
+
static description = 'Show installation settings, declared fields and the resulting job schedules. Includes the exact version, settings and consent timestamp required for a safe update.';
|
|
8
|
+
static args = { installation: core_1.Args.string({ required: true, ignoreStdin: true }) };
|
|
9
|
+
static flags = {
|
|
10
|
+
json: core_1.Flags.boolean({ description: 'Output settings and update preconditions as JSON' }),
|
|
11
|
+
};
|
|
12
|
+
async run() {
|
|
13
|
+
this.requireAuth();
|
|
14
|
+
const { args, flags } = await this.parse(AppsSettingsShow);
|
|
15
|
+
try {
|
|
16
|
+
const current = await data_provider_1.dataService.getAppInstallationSettings(args.installation);
|
|
17
|
+
if (flags.json)
|
|
18
|
+
return this.printJsonResult(current);
|
|
19
|
+
this.log(JSON.stringify(current.settings, null, 2));
|
|
20
|
+
this.log(`Version ${current.expectedVersionId}; consent ${current.expectedGrantedAt}; timezone ${current.timezone}`);
|
|
21
|
+
for (const job of (0, data_provider_1.appSettingsSchedulePreview)(current.configuration, current.settings))
|
|
22
|
+
this.log(`${(0, data_provider_1.plainAppLabel)(job.title)}: ${job.problem ?? job.schedule}`);
|
|
23
|
+
if (!current.canEdit)
|
|
24
|
+
this.log('Settings cannot be changed with this grant. The installer must approve the current version first.');
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
this.failInstallation(error);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.default = AppsSettingsShow;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { AppsCommand } from '../../lib/apps-command';
|
|
2
|
+
export default class AppsShow extends AppsCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
app: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
|
|
7
|
+
};
|
|
8
|
+
static flags: {
|
|
9
|
+
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
10
|
+
};
|
|
11
|
+
run(): Promise<void>;
|
|
12
|
+
}
|