@skrr-ai/cli 0.1.91 → 0.1.93
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/dist/base-command.d.ts +44 -0
- package/dist/base-command.js +96 -0
- package/dist/commands/agents/badge.d.ts +41 -0
- package/dist/commands/agents/badge.js +158 -0
- package/dist/commands/agents/create.d.ts +24 -0
- package/dist/commands/agents/create.js +212 -0
- package/dist/commands/agents/embed.d.ts +20 -0
- package/dist/commands/agents/embed.js +61 -0
- package/dist/commands/agents/share.d.ts +27 -0
- package/dist/commands/agents/share.js +100 -0
- package/dist/commands/agents/vanity.d.ts +21 -0
- package/dist/commands/agents/vanity.js +77 -0
- package/dist/commands/agents/visibility.d.ts +21 -1
- package/dist/commands/agents/visibility.js +112 -0
- package/dist/commands/commands.d.ts +1 -0
- package/dist/commands/commands.js +22 -9
- package/dist/commands/earnings/attributions.d.ts +17 -0
- package/dist/commands/earnings/attributions.js +82 -0
- package/dist/commands/earnings/index.js +2 -1
- package/dist/commands/generate-recovery-code.js +4 -3
- package/dist/commands/github/allow-tools.d.ts +1 -0
- package/dist/commands/github/app/install.d.ts +1 -0
- package/dist/commands/github/app/status.d.ts +1 -0
- package/dist/commands/github/connect.d.ts +1 -0
- package/dist/commands/github/connections.d.ts +1 -0
- package/dist/commands/github/disconnect.d.ts +1 -0
- package/dist/commands/github/finalize.d.ts +1 -0
- package/dist/commands/github/reconnect.d.ts +1 -0
- package/dist/commands/github/run.d.ts +1 -0
- package/dist/commands/github/tools.d.ts +1 -0
- package/dist/commands/integrations/connections/connect.d.ts +1 -0
- package/dist/commands/integrations/connections/disconnect.d.ts +1 -0
- package/dist/commands/integrations/connections/finalize.d.ts +1 -0
- package/dist/commands/integrations/connections/list.d.ts +1 -0
- package/dist/commands/integrations/connections/reconnect.d.ts +1 -0
- package/dist/commands/integrations/execute.d.ts +1 -0
- package/dist/commands/integrations/search.d.ts +1 -0
- package/dist/commands/integrations/toolkits.d.ts +1 -0
- package/dist/commands/integrations/tools/allow.d.ts +1 -0
- package/dist/commands/integrations/tools/list.d.ts +1 -0
- package/dist/commands/login.js +12 -0
- package/dist/commands/machines/dedicated/logs.d.ts +19 -0
- package/dist/commands/machines/dedicated/logs.js +103 -0
- package/dist/commands/machines/dedicated/power/index.js +3 -2
- package/dist/commands/machines/dedicated/power/set.js +1 -1
- package/dist/commands/machines/dedicated/power/waiting.d.ts +13 -0
- package/dist/commands/machines/dedicated/power/waiting.js +36 -0
- package/dist/commands/open.d.ts +24 -0
- package/dist/commands/open.js +74 -0
- package/dist/commands/projects/archive.d.ts +1 -0
- package/dist/commands/projects/archive.js +23 -0
- package/dist/commands/projects/delete.d.ts +1 -0
- package/dist/commands/projects/delete.js +23 -0
- package/dist/commands/projects/list.d.ts +3 -0
- package/dist/commands/projects/list.js +12 -2
- package/dist/commands/spaces/actions/add.js +4 -3
- package/dist/commands/spaces/actions/available.js +3 -2
- package/dist/commands/spaces/actions/list.js +5 -4
- package/dist/commands/spaces/actions/replace.js +6 -5
- package/dist/commands/spaces/archive.js +3 -2
- package/dist/commands/spaces/auto-executor/preview.js +4 -3
- package/dist/commands/spaces/auto-executor/run.js +4 -3
- package/dist/commands/spaces/auto-executor/runs.js +3 -2
- package/dist/commands/spaces/auto-executor/update.js +4 -3
- package/dist/commands/spaces/bootstrap.js +3 -2
- package/dist/commands/spaces/briefs/delete.js +3 -2
- package/dist/commands/spaces/briefs/get.js +3 -2
- package/dist/commands/spaces/briefs/list.js +3 -2
- package/dist/commands/spaces/briefs/set.js +5 -4
- package/dist/commands/spaces/capacity.js +5 -4
- package/dist/commands/spaces/conversations.js +3 -2
- package/dist/commands/spaces/cycles/create.js +3 -2
- package/dist/commands/spaces/cycles/graph.js +2 -1
- package/dist/commands/spaces/cycles/list.js +3 -2
- package/dist/commands/spaces/cycles/settings.js +4 -3
- package/dist/commands/spaces/cycles/show.js +3 -2
- package/dist/commands/spaces/cycles/update.js +3 -2
- package/dist/commands/spaces/delete.js +4 -3
- package/dist/commands/spaces/expertise-suggestions.js +4 -3
- package/dist/commands/spaces/files/delete.js +3 -2
- package/dist/commands/spaces/files/folders/create.js +3 -2
- package/dist/commands/spaces/files/folders/delete.js +3 -2
- package/dist/commands/spaces/files/folders/list.js +3 -2
- package/dist/commands/spaces/files/folders/update.js +3 -2
- package/dist/commands/spaces/files/list.js +3 -2
- package/dist/commands/spaces/files/move.js +3 -2
- package/dist/commands/spaces/files/rename.js +3 -2
- package/dist/commands/spaces/files/upload.js +6 -5
- package/dist/commands/spaces/github-automations/set.js +3 -2
- package/dist/commands/spaces/github-automations/show.js +3 -2
- package/dist/commands/spaces/goals.js +2 -1
- package/dist/commands/spaces/heartbeats/create.js +4 -3
- package/dist/commands/spaces/heartbeats/delete.js +4 -3
- package/dist/commands/spaces/heartbeats/list.js +4 -3
- package/dist/commands/spaces/heartbeats/status.js +3 -2
- package/dist/commands/spaces/heartbeats/update.js +4 -3
- package/dist/commands/spaces/insights.js +5 -4
- package/dist/commands/spaces/labels/add.js +4 -3
- package/dist/commands/spaces/labels/list.js +2 -1
- package/dist/commands/spaces/labels/remove.js +4 -3
- package/dist/commands/spaces/list.d.ts +3 -0
- package/dist/commands/spaces/list.js +11 -2
- package/dist/commands/spaces/live/cards/create.js +3 -2
- package/dist/commands/spaces/live/cards/list.js +3 -2
- package/dist/commands/spaces/live/cards/reorder.js +7 -2
- package/dist/commands/spaces/live/scene.js +4 -3
- package/dist/commands/spaces/members/add.js +7 -6
- package/dist/commands/spaces/members/list.js +4 -3
- package/dist/commands/spaces/members/remove.js +7 -6
- package/dist/commands/spaces/move.js +3 -2
- package/dist/commands/spaces/pin.js +5 -4
- package/dist/commands/spaces/preferences/show.js +4 -3
- package/dist/commands/spaces/preferences/tabs.js +4 -3
- package/dist/commands/spaces/revisions.js +3 -2
- package/dist/commands/spaces/room/ensure.js +5 -4
- package/dist/commands/spaces/room/messages.js +3 -2
- package/dist/commands/spaces/room/show.js +5 -4
- package/dist/commands/spaces/skills/add.js +4 -3
- package/dist/commands/spaces/skills/list.js +3 -2
- package/dist/commands/spaces/skills/pin.js +4 -3
- package/dist/commands/spaces/skills/remove.js +4 -3
- package/dist/commands/spaces/snapshot.js +3 -2
- package/dist/commands/spaces/states/archive.js +3 -2
- package/dist/commands/spaces/states/create.js +3 -2
- package/dist/commands/spaces/states/list.js +3 -2
- package/dist/commands/spaces/states/reorder.js +2 -1
- package/dist/commands/spaces/states/update.js +3 -2
- package/dist/commands/spaces/summary.js +4 -3
- package/dist/commands/spaces/tasks.d.ts +3 -0
- package/dist/commands/spaces/tasks.js +14 -3
- package/dist/commands/spaces/triggers/delete.js +5 -4
- package/dist/commands/spaces/triggers/set.js +4 -3
- package/dist/commands/spaces/triggers/show.js +4 -3
- package/dist/commands/spaces/unarchive.js +3 -2
- package/dist/commands/spaces/update.js +5 -4
- package/dist/commands/spaces/views/create.js +3 -2
- package/dist/commands/spaces/views/list.js +3 -2
- package/dist/commands/spaces/views/reorder.js +6 -3
- package/dist/commands/spaces/views/subscribe.js +2 -1
- package/dist/commands/spaces/views/subscriptions.js +1 -0
- package/dist/commands/spaces/views/unsubscribe.js +2 -1
- package/dist/commands/spaces/widgets/add.js +4 -3
- package/dist/commands/spaces/widgets/list.js +3 -2
- package/dist/commands/spaces/widgets/remove.js +5 -4
- package/dist/commands/spaces/work-graph.js +2 -1
- package/dist/commands/store/install.d.ts +1 -1
- package/dist/commands/store/install.js +24 -8
- package/dist/commands/store/show.d.ts +25 -0
- package/dist/commands/store/show.js +203 -0
- package/dist/commands/store/stats.d.ts +33 -0
- package/dist/commands/store/stats.js +258 -0
- package/dist/commands/tasks/actions/attach.js +1 -1
- package/dist/commands/tasks/actions/detach.js +4 -3
- package/dist/commands/tasks/activity.js +3 -2
- package/dist/commands/tasks/ancestors.js +2 -1
- package/dist/commands/tasks/approvals/create.js +2 -1
- package/dist/commands/tasks/approvals/delete.js +3 -2
- package/dist/commands/tasks/approvals/list.js +5 -4
- package/dist/commands/tasks/approvals/resolve.js +2 -1
- package/dist/commands/tasks/archive.js +3 -2
- package/dist/commands/tasks/assign.js +4 -3
- package/dist/commands/tasks/attachments/delete.js +3 -2
- package/dist/commands/tasks/attachments/download.d.ts +1 -0
- package/dist/commands/tasks/attachments/download.js +20 -1
- package/dist/commands/tasks/attachments/list.js +2 -1
- package/dist/commands/tasks/attachments/set-role.js +2 -1
- package/dist/commands/tasks/attachments/upload.js +2 -1
- package/dist/commands/tasks/bulk-update.d.ts +1 -0
- package/dist/commands/tasks/bulk-update.js +106 -15
- package/dist/commands/tasks/cancel-cascade.d.ts +1 -0
- package/dist/commands/tasks/cancel-cascade.js +13 -3
- package/dist/commands/tasks/cascade-status.js +2 -1
- package/dist/commands/tasks/chat/send.d.ts +44 -0
- package/dist/commands/tasks/chat/send.js +112 -0
- package/dist/commands/tasks/checkout.js +3 -2
- package/dist/commands/tasks/children.js +2 -1
- package/dist/commands/tasks/comments/add.js +7 -6
- package/dist/commands/tasks/comments/anchor.js +8 -7
- package/dist/commands/tasks/comments/delete.js +3 -2
- package/dist/commands/tasks/comments/list.js +2 -1
- package/dist/commands/tasks/comments/reopen.js +3 -2
- package/dist/commands/tasks/comments/resolve.js +3 -2
- package/dist/commands/tasks/create-tree.d.ts +63 -0
- package/dist/commands/tasks/create-tree.js +197 -4
- package/dist/commands/tasks/delete.js +5 -4
- package/dist/commands/tasks/descendants.js +2 -1
- package/dist/commands/tasks/dri-plan.js +3 -2
- package/dist/commands/tasks/dri-run.js +3 -2
- package/dist/commands/tasks/dri-status.js +2 -1
- package/dist/commands/tasks/duplicate-pipeline.js +2 -1
- package/dist/commands/tasks/execution-summary.js +2 -1
- package/dist/commands/tasks/execution-timeline.js +2 -1
- package/dist/commands/tasks/fork.js +1 -0
- package/dist/commands/tasks/forward.js +4 -3
- package/dist/commands/tasks/handover.js +1 -0
- package/dist/commands/tasks/interrupt.js +3 -2
- package/dist/commands/tasks/labels/attach.js +4 -3
- package/dist/commands/tasks/labels/detach.js +4 -3
- package/dist/commands/tasks/labels/suggest.js +5 -4
- package/dist/commands/tasks/list.d.ts +27 -1
- package/dist/commands/tasks/list.js +101 -3
- package/dist/commands/tasks/move.js +4 -3
- package/dist/commands/tasks/output.js +6 -5
- package/dist/commands/tasks/pause-schedule.js +3 -2
- package/dist/commands/tasks/promote.js +1 -0
- package/dist/commands/tasks/prompt-log.js +2 -1
- package/dist/commands/tasks/release.js +5 -4
- package/dist/commands/tasks/remind.js +2 -1
- package/dist/commands/tasks/replay.js +3 -2
- package/dist/commands/tasks/report.js +1 -0
- package/dist/commands/tasks/resume-schedule.js +3 -2
- package/dist/commands/tasks/retry-schedule.js +3 -2
- package/dist/commands/tasks/retry.js +10 -9
- package/dist/commands/tasks/revisions.js +2 -1
- package/dist/commands/tasks/runs.js +6 -5
- package/dist/commands/tasks/schedule.js +3 -2
- package/dist/commands/tasks/self-schedule.js +6 -5
- package/dist/commands/tasks/skills/pin.js +3 -2
- package/dist/commands/tasks/skills/unpin.js +3 -2
- package/dist/commands/tasks/snooze.js +6 -5
- package/dist/commands/tasks/start-all.js +5 -4
- package/dist/commands/tasks/subscribe.js +1 -0
- package/dist/commands/tasks/tags/add.js +4 -3
- package/dist/commands/tasks/tags/remove.js +4 -3
- package/dist/commands/tasks/timeline.js +3 -2
- package/dist/commands/tasks/today.d.ts +4 -1
- package/dist/commands/tasks/today.js +12 -2
- package/dist/commands/tasks/transcript.js +6 -5
- package/dist/commands/tasks/unschedule.js +3 -2
- package/dist/commands/tasks/unsnooze.js +3 -2
- package/dist/commands/tasks/unsubscribe.js +2 -1
- package/dist/commands/tasks/update.js +5 -4
- package/dist/commands/tasks/wait.js +5 -4
- package/dist/lib/agent-distribution.d.ts +37 -0
- package/dist/lib/agent-distribution.js +63 -0
- package/dist/lib/agent-ref.d.ts +69 -0
- package/dist/lib/agent-ref.js +168 -0
- package/dist/lib/api-fetch.d.ts +2 -0
- package/dist/lib/api-fetch.js +14 -3
- package/dist/lib/command-hygiene.d.ts +13 -0
- package/dist/lib/command-hygiene.js +62 -2
- package/dist/lib/dedicated-power.d.ts +16 -1
- package/dist/lib/dedicated-power.js +153 -2
- package/dist/lib/dry-run-plans.d.ts +50 -0
- package/dist/lib/dry-run-plans.js +85 -0
- package/dist/lib/json-output.d.ts +31 -0
- package/dist/lib/json-output.js +78 -0
- package/dist/lib/list-output.d.ts +75 -0
- package/dist/lib/list-output.js +266 -0
- package/dist/lib/machine-daemon-log.d.ts +36 -0
- package/dist/lib/machine-daemon-log.js +78 -0
- package/dist/lib/node-adapter.js +10 -1
- package/dist/lib/open-target.d.ts +12 -0
- package/dist/lib/open-target.js +108 -0
- package/dist/lib/rate-limit-retry.d.ts +45 -0
- package/dist/lib/rate-limit-retry.js +88 -0
- package/dist/lib/store-listing.d.ts +45 -0
- package/dist/lib/store-listing.js +186 -0
- package/dist/lib/task-batch.d.ts +67 -0
- package/dist/lib/task-batch.js +227 -0
- package/dist/lib/terminal-qr.d.ts +55 -0
- package/dist/lib/terminal-qr.js +119 -0
- package/dist/lib/web-url.d.ts +11 -0
- package/dist/lib/web-url.js +24 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/computerWire.d.ts +68 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/cjs/computerWire.js +47 -1
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/computerWire.d.ts +68 -0
- package/dist/node_modules/@skrr-ai/auth-core/dist/esm/computerWire.js +46 -0
- package/dist/node_modules/@skrr-ai/auth-core/package.json +1 -1
- package/dist/node_modules/@skrr-ai/data-provider/index.js +6615 -6112
- package/oclif.manifest.json +41499 -32585
- package/package.json +2 -1
|
@@ -3,6 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.parseCapabilityRationales = parseCapabilityRationales;
|
|
4
4
|
exports.parseReleaseDependencies = parseReleaseDependencies;
|
|
5
5
|
exports.buildReleaseLicense = buildReleaseLicense;
|
|
6
|
+
exports.resolveTrialBrief = resolveTrialBrief;
|
|
7
|
+
exports.releaseIsSealed = releaseIsSealed;
|
|
8
|
+
exports.describeSlugRefusal = describeSlugRefusal;
|
|
9
|
+
const node_fs_1 = require("node:fs");
|
|
6
10
|
const core_1 = require("@oclif/core");
|
|
7
11
|
const data_provider_1 = require("@skrr-ai/data-provider");
|
|
8
12
|
const base_command_1 = require("../../base-command");
|
|
@@ -68,6 +72,66 @@ function buildReleaseLicense(licenseId, remix) {
|
|
|
68
72
|
},
|
|
69
73
|
};
|
|
70
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* `--trial-brief <text|@file>` → the brief the server records on the release
|
|
77
|
+
* (`agents/trialBrief.ts`). A value starting with `@` names a file to read;
|
|
78
|
+
* `@@…` is the escape for a brief that itself begins with `@`. Validated with
|
|
79
|
+
* the server's own normalizer so an over-long brief is refused here, before a
|
|
80
|
+
* request, with the same limit.
|
|
81
|
+
*/
|
|
82
|
+
function resolveTrialBrief(value, readFile = (path) => (0, node_fs_1.readFileSync)(path, 'utf8')) {
|
|
83
|
+
if (value === undefined)
|
|
84
|
+
return {};
|
|
85
|
+
let text = value;
|
|
86
|
+
if (value.startsWith('@@')) {
|
|
87
|
+
text = value.slice(1);
|
|
88
|
+
}
|
|
89
|
+
else if (value.startsWith('@')) {
|
|
90
|
+
const path = value.slice(1);
|
|
91
|
+
if (!path)
|
|
92
|
+
return { error: '--trial-brief @<file> needs a file path after the @.' };
|
|
93
|
+
try {
|
|
94
|
+
text = readFile(path);
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
return { error: `--trial-brief could not read ${path}: ${err.message}` };
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
const normalized = (0, data_provider_1.normalizeTrialBrief)(text);
|
|
101
|
+
if (!normalized.ok) {
|
|
102
|
+
return {
|
|
103
|
+
error: normalized.reason === 'too_long'
|
|
104
|
+
? `--trial-brief is at most ${normalized.maxChars} characters.`
|
|
105
|
+
: '--trial-brief must be text.',
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
// Blank is sent as blank: an explicit "no brief" on this release.
|
|
109
|
+
return { trialBrief: normalized.brief ?? '' };
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Whether a release published with these terms keeps its instructions from
|
|
113
|
+
* the public — the case where, without a brief, its listing has no trial.
|
|
114
|
+
*/
|
|
115
|
+
function releaseIsSealed(price, sourceVisibility) {
|
|
116
|
+
if (sourceVisibility === 'public')
|
|
117
|
+
return false;
|
|
118
|
+
if (sourceVisibility === 'sealed' || sourceVisibility === 'licensed')
|
|
119
|
+
return true;
|
|
120
|
+
return (price ?? 0) > 0;
|
|
121
|
+
}
|
|
122
|
+
const SLUG_REFUSALS = {
|
|
123
|
+
empty: 'needs at least two letters or digits (a-z, 0-9)',
|
|
124
|
+
too_short: 'needs at least two letters or digits (a-z, 0-9)',
|
|
125
|
+
too_long: 'is at most 60 characters of a-z, 0-9 and hyphens',
|
|
126
|
+
reserved: 'is reserved; pick another',
|
|
127
|
+
};
|
|
128
|
+
/** One sentence for a slug the shared check refused, naming the canonical form. */
|
|
129
|
+
function describeSlugRefusal(input, check) {
|
|
130
|
+
if (check.ok)
|
|
131
|
+
return '';
|
|
132
|
+
const shown = check.slug && check.slug !== input ? ` (as "${check.slug}")` : '';
|
|
133
|
+
return `--slug "${input}"${shown} ${SLUG_REFUSALS[check.reason] ?? 'is not a valid slug'}.`;
|
|
134
|
+
}
|
|
71
135
|
class AgentsVisibility extends base_command_1.BaseCommand {
|
|
72
136
|
static description = 'Set the visibility of an agent';
|
|
73
137
|
static examples = [
|
|
@@ -79,6 +143,8 @@ class AgentsVisibility extends base_command_1.BaseCommand {
|
|
|
79
143
|
'<%= config.bin %> agents visibility <agent-id> --public --dependency skill:<skill-id>@<store-release-id>',
|
|
80
144
|
'<%= config.bin %> agents visibility <agent-id> --public --license mit --remix attributed --source-visibility public',
|
|
81
145
|
'<%= config.bin %> agents visibility <agent-id> --public --license proprietary --source-visibility sealed',
|
|
146
|
+
'<%= config.bin %> agents visibility <agent-id> --public --slug trip-planner',
|
|
147
|
+
'<%= config.bin %> agents visibility <agent-id> --public --price 5000000 --trial-brief @trial-brief.md',
|
|
82
148
|
];
|
|
83
149
|
static args = {
|
|
84
150
|
id: core_1.Args.string({ description: 'Agent ID', required: true, ignoreStdin: true }),
|
|
@@ -126,6 +192,18 @@ class AgentsVisibility extends base_command_1.BaseCommand {
|
|
|
126
192
|
description: "Whether a buyer's installed copy may be published as a derived listing: attributed (the fork credits this release) or none. Needs --license; defaults to none",
|
|
127
193
|
options: [...data_provider_1.STORE_RELEASE_REMIX_GRANTS],
|
|
128
194
|
}),
|
|
195
|
+
slug: core_1.Flags.string({
|
|
196
|
+
description: "The agent's address in your publisher namespace, /@<handle>/<slug> (an alias of /a/<id>). " +
|
|
197
|
+
'Typed text is canonicalised (My Agent → my-agent). Omit to keep the current slug, or to claim ' +
|
|
198
|
+
'one from the name on a first publish. A replaced slug keeps working for this agent.',
|
|
199
|
+
}),
|
|
200
|
+
'trial-brief': core_1.Flags.string({
|
|
201
|
+
description: 'What someone trying this agent from its listing should experience, as text or @<file>. ' +
|
|
202
|
+
'A trial of a release whose instructions are private (paid, sealed or licensed) runs on this ' +
|
|
203
|
+
'brief instead, and without one that listing has no trial. People who try it can read it back, ' +
|
|
204
|
+
'so never put your private instructions here. At most 4000 characters; recorded on this ' +
|
|
205
|
+
'release only, so pass it on every publish (like --language).',
|
|
206
|
+
}),
|
|
129
207
|
'source-visibility': core_1.Flags.string({
|
|
130
208
|
description: "Who may read the release's source, independent of price: licensed (license holders), public (anyone who sees the listing) or sealed (you only). Omit to keep the price-derived rule",
|
|
131
209
|
options: [...data_provider_1.STORE_RELEASE_SOURCE_VISIBILITIES],
|
|
@@ -171,6 +249,24 @@ class AgentsVisibility extends base_command_1.BaseCommand {
|
|
|
171
249
|
if ((license || sourceVisibility) && !isPublic) {
|
|
172
250
|
this.error('--license, --remix and --source-visibility are terms of a public release; pass them with --public.', { exit: 1 });
|
|
173
251
|
}
|
|
252
|
+
const { trialBrief, error: trialBriefError } = resolveTrialBrief(flags['trial-brief']);
|
|
253
|
+
if (trialBriefError)
|
|
254
|
+
this.error(trialBriefError, { exit: 1 });
|
|
255
|
+
if (trialBrief !== undefined && !isPublic) {
|
|
256
|
+
this.error('--trial-brief is recorded on a public release; pass it with --public.', {
|
|
257
|
+
exit: 1,
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
let slug;
|
|
261
|
+
if (flags.slug !== undefined) {
|
|
262
|
+
if (!isPublic) {
|
|
263
|
+
this.error('--slug names a public listing; pass it with --public.', { exit: 1 });
|
|
264
|
+
}
|
|
265
|
+
const check = (0, data_provider_1.checkAgentSlug)(flags.slug);
|
|
266
|
+
if (!check.ok)
|
|
267
|
+
this.error(describeSlugRefusal(flags.slug, check), { exit: 1 });
|
|
268
|
+
slug = check.slug;
|
|
269
|
+
}
|
|
174
270
|
let result;
|
|
175
271
|
try {
|
|
176
272
|
result = await data_provider_1.dataService.setAgentVisibility({
|
|
@@ -186,6 +282,8 @@ class AgentsVisibility extends base_command_1.BaseCommand {
|
|
|
186
282
|
dependencies,
|
|
187
283
|
license,
|
|
188
284
|
sourceVisibility,
|
|
285
|
+
...(trialBrief !== undefined ? { trialBrief } : {}),
|
|
286
|
+
...(slug !== undefined ? { slug } : {}),
|
|
189
287
|
});
|
|
190
288
|
}
|
|
191
289
|
catch (err) {
|
|
@@ -198,12 +296,26 @@ class AgentsVisibility extends base_command_1.BaseCommand {
|
|
|
198
296
|
const label = isPublic ? 'public' : 'private';
|
|
199
297
|
this.log(`Set agent ${args.id} visibility: ${label}`);
|
|
200
298
|
const recorded = result;
|
|
299
|
+
if (recorded?.vanity?.path) {
|
|
300
|
+
this.log(`Vanity address: ${recorded.vanity.path}`);
|
|
301
|
+
}
|
|
302
|
+
else if (recorded?.vanity?.slug) {
|
|
303
|
+
this.log(`Slug: ${recorded.vanity.slug} (claim a publisher handle for /@<handle>/${recorded.vanity.slug} to resolve)`);
|
|
304
|
+
}
|
|
201
305
|
if (recorded?.license) {
|
|
202
306
|
this.log(`License: ${recorded.license.id} (remix: ${recorded.license.remix})`);
|
|
203
307
|
}
|
|
204
308
|
if (recorded?.sourceVisibility) {
|
|
205
309
|
this.log(`Source visibility: ${recorded.sourceVisibility}`);
|
|
206
310
|
}
|
|
311
|
+
if (isPublic && recorded) {
|
|
312
|
+
if (recorded.trialBrief) {
|
|
313
|
+
this.log(`Trial brief: recorded (${recorded.trialBrief.length} characters)`);
|
|
314
|
+
}
|
|
315
|
+
else if (releaseIsSealed(recorded.price, recorded.sourceVisibility)) {
|
|
316
|
+
this.log('Trial: none. This release keeps its instructions private and has no trial brief, so its listing cannot be tried. Pass --trial-brief to add one.');
|
|
317
|
+
}
|
|
318
|
+
}
|
|
207
319
|
}
|
|
208
320
|
}
|
|
209
321
|
exports.default = AgentsVisibility;
|
|
@@ -9,6 +9,7 @@ export default class Commands extends BaseCommand {
|
|
|
9
9
|
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
10
10
|
search: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
11
11
|
schema: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
12
|
+
brief: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
12
13
|
audit: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
13
14
|
};
|
|
14
15
|
run(): Promise<void>;
|
|
@@ -9,6 +9,7 @@ class Commands extends base_command_1.BaseCommand {
|
|
|
9
9
|
static examples = [
|
|
10
10
|
'<%= config.bin %> commands',
|
|
11
11
|
'<%= config.bin %> commands --json',
|
|
12
|
+
'<%= config.bin %> commands --json --brief',
|
|
12
13
|
'<%= config.bin %> commands --search agent --json',
|
|
13
14
|
'<%= config.bin %> commands --search "publish release"',
|
|
14
15
|
'<%= config.bin %> commands --schema "agent message send"',
|
|
@@ -28,6 +29,10 @@ class Commands extends base_command_1.BaseCommand {
|
|
|
28
29
|
description: 'Filter commands by name, description, or examples',
|
|
29
30
|
}),
|
|
30
31
|
schema: core_1.Flags.boolean({ description: 'Return one command schema instead of the full list' }),
|
|
32
|
+
brief: core_1.Flags.boolean({
|
|
33
|
+
description: 'With --json: id, command and one-line description only (about 14x smaller than the full list). Use --schema "<command>" for one command\'s flags.',
|
|
34
|
+
exclusive: ['schema', 'audit'],
|
|
35
|
+
}),
|
|
31
36
|
audit: core_1.Flags.boolean({
|
|
32
37
|
description: 'Run command hygiene checks for agent-friendly CLI contracts',
|
|
33
38
|
exclusive: ['schema'],
|
|
@@ -101,20 +106,28 @@ class Commands extends base_command_1.BaseCommand {
|
|
|
101
106
|
// Search is a discovery operation: keep its JSON small enough to pass
|
|
102
107
|
// directly into an agent's next decision. Use --schema for full flags and
|
|
103
108
|
// argument metadata for one selected command.
|
|
104
|
-
const outputEntries =
|
|
105
|
-
? entries.map(({ id, command, description
|
|
106
|
-
|
|
107
|
-
command,
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
109
|
+
const outputEntries = flags.brief
|
|
110
|
+
? entries.map(({ id, command, description }) => ({ id, command, description }))
|
|
111
|
+
: query
|
|
112
|
+
? entries.map(({ id, command, description, aliases, examples }) => ({
|
|
113
|
+
id,
|
|
114
|
+
command,
|
|
115
|
+
description,
|
|
116
|
+
aliases,
|
|
117
|
+
examples,
|
|
118
|
+
}))
|
|
119
|
+
: entries;
|
|
113
120
|
const payload = {
|
|
114
121
|
object: 'list',
|
|
115
122
|
data: outputEntries,
|
|
116
123
|
count: entries.length,
|
|
117
124
|
...(query ? { query: flags.search } : {}),
|
|
125
|
+
...(flags.brief
|
|
126
|
+
? {
|
|
127
|
+
brief: true,
|
|
128
|
+
hint: 'Run `skrr commands --schema "<command>" --json` for one command\'s flags.',
|
|
129
|
+
}
|
|
130
|
+
: {}),
|
|
118
131
|
};
|
|
119
132
|
if (flags.json) {
|
|
120
133
|
this.log(JSON.stringify(payload, null, 2));
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { DistributionAttributionsResponse } from '@skrr-ai/data-provider';
|
|
2
|
+
import { BaseCommand } from '../../base-command';
|
|
3
|
+
/** The human rendering; exported for the spec. */
|
|
4
|
+
export declare function renderAttributions(view: DistributionAttributionsResponse, log: (line: string) => void): void;
|
|
5
|
+
/**
|
|
6
|
+
* `skrr earnings attributions` — what your share links drove
|
|
7
|
+
* (agent-distribution-2026-10-08.md, "Affiliate"). Read-only, and only ever
|
|
8
|
+
* your own codes.
|
|
9
|
+
*/
|
|
10
|
+
export default class EarningsAttributions extends BaseCommand {
|
|
11
|
+
static description: string;
|
|
12
|
+
static examples: string[];
|
|
13
|
+
static flags: {
|
|
14
|
+
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
15
|
+
};
|
|
16
|
+
run(): Promise<void>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.renderAttributions = renderAttributions;
|
|
4
|
+
const core_1 = require("@oclif/core");
|
|
5
|
+
const data_provider_1 = require("@skrr-ai/data-provider");
|
|
6
|
+
const base_command_1 = require("../../base-command");
|
|
7
|
+
/** tokenCredits are micro-dollars (1,000,000 = $1.00), as everywhere in earnings. */
|
|
8
|
+
const CREDITS_PER_USD = 1_000_000;
|
|
9
|
+
function amount(value, currency) {
|
|
10
|
+
if (currency === 'tokenCredits' || currency === 'USD') {
|
|
11
|
+
return `$${(value / CREDITS_PER_USD).toFixed(2)}`;
|
|
12
|
+
}
|
|
13
|
+
return `${value} ${currency}`;
|
|
14
|
+
}
|
|
15
|
+
const REWARD_STATE_LABEL = {
|
|
16
|
+
none: 'measured, no reward',
|
|
17
|
+
pending: 'reward pending',
|
|
18
|
+
available: 'reward available',
|
|
19
|
+
reversed: 'reward reversed',
|
|
20
|
+
};
|
|
21
|
+
/** The human rendering; exported for the spec. */
|
|
22
|
+
function renderAttributions(view, log) {
|
|
23
|
+
const plural = view.installs === 1 ? '' : 's';
|
|
24
|
+
log(`Your links drove ${view.installs} install${plural}.`);
|
|
25
|
+
log(` Paid: ${view.paidInstalls}${view.refundedInstalls ? ` (${view.refundedInstalls} refunded)` : ''}`);
|
|
26
|
+
if (view.gross.length > 0) {
|
|
27
|
+
log(` Sales: ${view.gross.map((g) => amount(g.amount, g.currency)).join(', ')}`);
|
|
28
|
+
}
|
|
29
|
+
if (view.rateBps > 0) {
|
|
30
|
+
log(` Rewards: ${amount(view.rewards.pending, 'tokenCredits')} pending, ` +
|
|
31
|
+
`${amount(view.rewards.available, 'tokenCredits')} available ` +
|
|
32
|
+
`(rate ${(view.rateBps / 100).toFixed(2)}%)`);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
log(' Rewards: not enabled — paid installs are measured, nothing is paid yet.');
|
|
36
|
+
}
|
|
37
|
+
if (view.recent.length === 0) {
|
|
38
|
+
if (view.installs === 0)
|
|
39
|
+
log('Share an agent (skrr agents embed, or a share link) to see what it drives.');
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
log('');
|
|
43
|
+
log('Recent paid installs:');
|
|
44
|
+
for (const row of view.recent) {
|
|
45
|
+
const when = row.createdAt.slice(0, 10);
|
|
46
|
+
const name = row.agentName || row.agentId;
|
|
47
|
+
const refunded = row.refundedAt ? ', refunded' : '';
|
|
48
|
+
log(` ${when} ${name} ${amount(row.gross, row.currency)} via ${row.channel ?? 'unknown'} ` +
|
|
49
|
+
`(${REWARD_STATE_LABEL[row.rewardState] ?? row.rewardState}${refunded})`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* `skrr earnings attributions` — what your share links drove
|
|
54
|
+
* (agent-distribution-2026-10-08.md, "Affiliate"). Read-only, and only ever
|
|
55
|
+
* your own codes.
|
|
56
|
+
*/
|
|
57
|
+
class EarningsAttributions extends base_command_1.BaseCommand {
|
|
58
|
+
static description = 'Show the installs your share links drove, the paid ones, and any reward they earned (read-only)';
|
|
59
|
+
static examples = [
|
|
60
|
+
'<%= config.bin %> earnings attributions',
|
|
61
|
+
'<%= config.bin %> earnings attributions --json',
|
|
62
|
+
];
|
|
63
|
+
static flags = {
|
|
64
|
+
json: core_1.Flags.boolean({ description: 'Output as JSON' }),
|
|
65
|
+
};
|
|
66
|
+
async run() {
|
|
67
|
+
this.requireAuth();
|
|
68
|
+
const { flags } = await this.parse(EarningsAttributions);
|
|
69
|
+
try {
|
|
70
|
+
const view = await data_provider_1.dataService.getDistributionAttributions();
|
|
71
|
+
if (flags.json) {
|
|
72
|
+
this.log(JSON.stringify(view, null, 2));
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
renderAttributions(view, (line) => this.log(line));
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
this.handleApiError(error, { subject: 'attributions' });
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
exports.default = EarningsAttributions;
|
|
@@ -11,12 +11,13 @@ const earnings_1 = require("../../lib/earnings");
|
|
|
11
11
|
*/
|
|
12
12
|
class Earnings extends base_command_1.BaseCommand {
|
|
13
13
|
static description = 'Show your publisher earnings: available and pending balance, payout window and automatic payouts (read-only). ' +
|
|
14
|
-
'See `earnings statements` and `earnings payouts` for the history behind it.';
|
|
14
|
+
'See `earnings statements` and `earnings payouts` for the history behind it, and `earnings attributions` for what your share links drove.';
|
|
15
15
|
static examples = [
|
|
16
16
|
'<%= config.bin %> earnings',
|
|
17
17
|
'<%= config.bin %> earnings --json',
|
|
18
18
|
'<%= config.bin %> earnings statements',
|
|
19
19
|
'<%= config.bin %> earnings payouts',
|
|
20
|
+
'<%= config.bin %> earnings attributions',
|
|
20
21
|
];
|
|
21
22
|
static flags = {
|
|
22
23
|
json: core_1.Flags.boolean({ description: 'Output as JSON' }),
|
|
@@ -61,9 +61,10 @@ class GenerateRecoveryCode extends base_command_1.BaseCommand {
|
|
|
61
61
|
process.stdout.write(result.formatted + '\n');
|
|
62
62
|
// All metadata and warnings to stderr so stdout remains clean.
|
|
63
63
|
process.stderr.write('\n');
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
64
|
+
// The code itself is on stdout, ABOVE. It used to be printed again here, so
|
|
65
|
+
// an interactive terminal (stdout and stderr share the screen, and scrollback
|
|
66
|
+
// keeps both) held two copies of a one-time credential.
|
|
67
|
+
process.stderr.write(' Account Recovery Code is printed above (copy now — this is the only time it will be shown).\n');
|
|
67
68
|
process.stderr.write('\n');
|
|
68
69
|
process.stderr.write(' WARNING: Store this somewhere safe. It will not be shown again.\n');
|
|
69
70
|
process.stderr.write(' If lost, run this command again to generate a new code (the old one is revoked).\n');
|
|
@@ -12,6 +12,7 @@ export default class GitHubAllowTools extends BaseCommand {
|
|
|
12
12
|
token: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
13
13
|
workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
14
14
|
profile: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
15
|
+
raw: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
15
16
|
};
|
|
16
17
|
run(): Promise<void>;
|
|
17
18
|
}
|
|
@@ -21,6 +21,7 @@ export default class GitHubAppInstall extends BaseCommand {
|
|
|
21
21
|
token: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
22
22
|
workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
23
23
|
profile: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
24
|
+
raw: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
24
25
|
};
|
|
25
26
|
run(): Promise<void>;
|
|
26
27
|
}
|
|
@@ -15,6 +15,7 @@ export default class GitHubAppStatus extends BaseCommand {
|
|
|
15
15
|
token: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
16
16
|
workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
17
17
|
profile: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
18
|
+
raw: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
18
19
|
};
|
|
19
20
|
run(): Promise<void>;
|
|
20
21
|
}
|
|
@@ -25,6 +25,7 @@ export default class GitHubConnect extends BaseCommand {
|
|
|
25
25
|
token: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
26
26
|
workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
27
27
|
profile: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
28
|
+
raw: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
28
29
|
};
|
|
29
30
|
run(): Promise<void>;
|
|
30
31
|
}
|
|
@@ -10,6 +10,7 @@ export default class GitHubConnections extends BaseCommand {
|
|
|
10
10
|
token: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
11
11
|
workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
12
12
|
profile: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
13
|
+
raw: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
13
14
|
};
|
|
14
15
|
run(): Promise<void>;
|
|
15
16
|
}
|
|
@@ -10,6 +10,7 @@ export default class GitHubDisconnect extends BaseCommand {
|
|
|
10
10
|
token: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
11
11
|
workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
12
12
|
profile: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
13
|
+
raw: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
13
14
|
};
|
|
14
15
|
run(): Promise<void>;
|
|
15
16
|
}
|
|
@@ -14,6 +14,7 @@ export default class GitHubFinalize extends BaseCommand {
|
|
|
14
14
|
token: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
15
15
|
workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
16
16
|
profile: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
17
|
+
raw: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
17
18
|
};
|
|
18
19
|
run(): Promise<void>;
|
|
19
20
|
}
|
|
@@ -12,6 +12,7 @@ export default class GitHubReconnect extends BaseCommand {
|
|
|
12
12
|
token: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
13
13
|
workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
14
14
|
profile: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
15
|
+
raw: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
15
16
|
};
|
|
16
17
|
run(): Promise<void>;
|
|
17
18
|
}
|
|
@@ -16,6 +16,7 @@ export default class GitHubRun extends BaseCommand {
|
|
|
16
16
|
token: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
17
17
|
workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
18
18
|
profile: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
19
|
+
raw: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
19
20
|
};
|
|
20
21
|
run(): Promise<void>;
|
|
21
22
|
}
|
|
@@ -15,6 +15,7 @@ export default class GitHubTools extends BaseCommand {
|
|
|
15
15
|
token: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
16
16
|
workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
17
17
|
profile: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
18
|
+
raw: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
18
19
|
};
|
|
19
20
|
run(): Promise<void>;
|
|
20
21
|
}
|
|
@@ -15,6 +15,7 @@ export default class IntegrationsConnectionsConnect extends BaseCommand {
|
|
|
15
15
|
token: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
16
16
|
workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
17
17
|
profile: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
18
|
+
raw: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
18
19
|
};
|
|
19
20
|
run(): Promise<void>;
|
|
20
21
|
}
|
|
@@ -13,6 +13,7 @@ export default class IntegrationsConnectionsDisconnect extends BaseCommand {
|
|
|
13
13
|
token: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
14
14
|
workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
15
15
|
profile: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
16
|
+
raw: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
16
17
|
};
|
|
17
18
|
run(): Promise<void>;
|
|
18
19
|
}
|
|
@@ -14,6 +14,7 @@ export default class IntegrationsConnectionsFinalize extends BaseCommand {
|
|
|
14
14
|
token: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
15
15
|
workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
16
16
|
profile: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
17
|
+
raw: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
17
18
|
};
|
|
18
19
|
run(): Promise<void>;
|
|
19
20
|
}
|
|
@@ -10,6 +10,7 @@ export default class IntegrationsConnectionsList extends BaseCommand {
|
|
|
10
10
|
token: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
11
11
|
workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
12
12
|
profile: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
13
|
+
raw: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
13
14
|
};
|
|
14
15
|
run(): Promise<void>;
|
|
15
16
|
}
|
|
@@ -15,6 +15,7 @@ export default class IntegrationsConnectionsReconnect extends BaseCommand {
|
|
|
15
15
|
token: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
16
16
|
workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
17
17
|
profile: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
18
|
+
raw: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
18
19
|
};
|
|
19
20
|
run(): Promise<void>;
|
|
20
21
|
}
|
|
@@ -16,6 +16,7 @@ export default class IntegrationsExecute extends BaseCommand {
|
|
|
16
16
|
token: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
17
17
|
workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
18
18
|
profile: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
19
|
+
raw: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
19
20
|
};
|
|
20
21
|
run(): Promise<void>;
|
|
21
22
|
}
|
|
@@ -14,6 +14,7 @@ export default class IntegrationsSearch extends BaseCommand {
|
|
|
14
14
|
token: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
15
15
|
workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
16
16
|
profile: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
17
|
+
raw: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
17
18
|
};
|
|
18
19
|
run(): Promise<void>;
|
|
19
20
|
}
|
|
@@ -9,6 +9,7 @@ export default class IntegrationsToolkits extends BaseCommand {
|
|
|
9
9
|
token: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
10
10
|
workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
11
11
|
profile: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
12
|
+
raw: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
12
13
|
};
|
|
13
14
|
run(): Promise<void>;
|
|
14
15
|
}
|
|
@@ -14,6 +14,7 @@ export default class IntegrationsToolsAllow extends BaseCommand {
|
|
|
14
14
|
token: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
15
15
|
workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
16
16
|
profile: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
17
|
+
raw: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
17
18
|
};
|
|
18
19
|
run(): Promise<void>;
|
|
19
20
|
}
|
|
@@ -11,6 +11,7 @@ export default class IntegrationsToolsList extends BaseCommand {
|
|
|
11
11
|
token: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
12
12
|
workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
13
13
|
profile: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
14
|
+
raw: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
14
15
|
};
|
|
15
16
|
run(): Promise<void>;
|
|
16
17
|
}
|
package/dist/commands/login.js
CHANGED
|
@@ -13,6 +13,8 @@ const login_1 = require("../lib/login");
|
|
|
13
13
|
const device_code_1 = require("../lib/device-code");
|
|
14
14
|
const api_fetch_1 = require("../lib/api-fetch");
|
|
15
15
|
const auth_storage_1 = require("../lib/auth-storage");
|
|
16
|
+
const credential_resolver_1 = require("../lib/credential-resolver");
|
|
17
|
+
const node_adapter_1 = require("../lib/node-adapter");
|
|
16
18
|
const prompt_1 = require("../lib/prompt");
|
|
17
19
|
/**
|
|
18
20
|
* `skrr login`
|
|
@@ -218,6 +220,16 @@ class Login extends base_command_1.BaseCommand {
|
|
|
218
220
|
});
|
|
219
221
|
// Only now is the new pointer earned.
|
|
220
222
|
undoBaseURL = null;
|
|
223
|
+
// Adopt the credential this login just stored. `BaseCommand.init()`
|
|
224
|
+
// resolved this process's credential BEFORE the login ran — the old,
|
|
225
|
+
// possibly revoked session, or nothing at all — and the adapter keeps
|
|
226
|
+
// that override until told otherwise. The hand-off below is the first
|
|
227
|
+
// authenticated call after login, so it went out under the stale
|
|
228
|
+
// credential: `POST /api/daemons/daemon-handoff` answered 401, the
|
|
229
|
+
// adapter fell back to brokering through a daemon that had no
|
|
230
|
+
// credential yet, and the freshly installed daemon was left signed out.
|
|
231
|
+
this.resolvedCredential = await (0, credential_resolver_1.resolveCredential)({ bareMode: this.bareMode });
|
|
232
|
+
(0, node_adapter_1.setAdapterCredentialOverride)(this.resolvedCredential);
|
|
221
233
|
this.log('');
|
|
222
234
|
this.log(`Signed in via ${result.flow} on ${(0, config_1.describeDeployment)(this.cliConfig.baseURL)}. ` +
|
|
223
235
|
`Run \`${this.config.bin} whoami\` to confirm your identity.`);
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { DedicatedLeaseCommand } from '../../../lib/dedicated-lease-command';
|
|
2
|
+
import { type ComputerDaemonLogResult } from '../../../lib/machine-daemon-log';
|
|
3
|
+
/** One line as it prints: UTC time (the daemon's clock), level, then the daemon's own text. */
|
|
4
|
+
export declare function formatDaemonLogLine(line: ComputerDaemonLogResult['lines'][number]): string;
|
|
5
|
+
export default class DedicatedMachinesLogs extends DedicatedLeaseCommand {
|
|
6
|
+
static summary: string;
|
|
7
|
+
static description: string;
|
|
8
|
+
static examples: string[];
|
|
9
|
+
static args: {
|
|
10
|
+
lease: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
|
|
11
|
+
};
|
|
12
|
+
static flags: {
|
|
13
|
+
lines: import("@oclif/core/lib/interfaces").OptionFlag<number, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
14
|
+
since: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
15
|
+
level: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
16
|
+
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
17
|
+
};
|
|
18
|
+
run(): Promise<void>;
|
|
19
|
+
}
|