@sente-labs/cli 0.13.0 → 0.14.0
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/commands/registration.js +211 -0
- package/dist/commands/registration.js.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerRegistrationCommands = registerRegistrationCommands;
|
|
4
|
+
const client_1 = require("../client");
|
|
5
|
+
const identityRef_1 = require("../identityRef");
|
|
6
|
+
const output_1 = require("../output");
|
|
7
|
+
const TERMINAL = new Set(['completed', 'failed']);
|
|
8
|
+
const POLL_INTERVAL_MS = 3000;
|
|
9
|
+
// Cap the client-side wait so `register`/`relogin` can't hang forever if a run wedges. The run
|
|
10
|
+
// controller enforces its own wall-clock (RUN_TIMEOUT_MINUTES+2), so this is a safety net above it;
|
|
11
|
+
// on timeout we return the last-polled (non-terminal) run and tell the user to poll `sente run <id>`.
|
|
12
|
+
const MAX_WAIT_MS = 10 * 60 * 1000;
|
|
13
|
+
/**
|
|
14
|
+
* Poll a run to a terminal (completed/failed) or blocked state, printing a
|
|
15
|
+
* live status line to stderr. Returns the final run — or, on timeout, the
|
|
16
|
+
* last-polled (still-running) run. `--json` suppresses the status line.
|
|
17
|
+
*/
|
|
18
|
+
async function waitForRun(client, runId, opts) {
|
|
19
|
+
const deadline = Date.now() + MAX_WAIT_MS;
|
|
20
|
+
let run = await client.request(`/v1/runs/${runId}`);
|
|
21
|
+
let last = '';
|
|
22
|
+
for (;;) {
|
|
23
|
+
if (!opts.json && run.status !== last) {
|
|
24
|
+
process.stderr.write(` ${run.status}…\n`);
|
|
25
|
+
last = run.status;
|
|
26
|
+
}
|
|
27
|
+
if (TERMINAL.has(run.status) || run.status === 'blocked')
|
|
28
|
+
return run;
|
|
29
|
+
if (Date.now() >= deadline)
|
|
30
|
+
return run; // timed out — caller renders "still running"
|
|
31
|
+
await new Promise((r) => setTimeout(r, POLL_INTERVAL_MS));
|
|
32
|
+
run = await client.request(`/v1/runs/${runId}`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Render the outcome of a finished/blocked run to stderr, and exit non-zero on
|
|
37
|
+
* failure. Shared by `register` and `relogin` (same wait/poll UX). `--json`
|
|
38
|
+
* already emitted the full object, so this only handles the human path.
|
|
39
|
+
*/
|
|
40
|
+
function renderRunOutcome(reg, run, opts) {
|
|
41
|
+
(0, output_1.printSuccess)({ registration: reg, run }, () => {
|
|
42
|
+
if (run.status === 'completed') {
|
|
43
|
+
process.stdout.write(`Account ready.\n registration: ${reg.id}\n username: ${reg.username ?? '-'}\n`);
|
|
44
|
+
}
|
|
45
|
+
else if (run.status === 'blocked') {
|
|
46
|
+
process.stderr.write(`Run blocked (${run.error?.code ?? 'unknown'}) — human takeover needed.\n` +
|
|
47
|
+
(run.liveViewUrl ? ` live view: ${run.liveViewUrl}\n` : '') +
|
|
48
|
+
` resume: sente run resume ${run.id}\n`);
|
|
49
|
+
}
|
|
50
|
+
else if (run.status === 'failed') {
|
|
51
|
+
process.stderr.write(`Run failed: ${run.error?.code ?? 'unknown'}${run.error?.detail ? ` — ${run.error.detail}` : ''}\n`);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
// Non-terminal (still running/awaiting_verification) — the client wait timed out, not the run.
|
|
55
|
+
process.stderr.write(`Run still ${run.status} after waiting — check later with:\n sente run ${run.id}\n`);
|
|
56
|
+
}
|
|
57
|
+
}, opts);
|
|
58
|
+
if (run.status !== 'completed')
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* `sente register|registrations|relogin|credentials|run` — drive the
|
|
63
|
+
* register/login loop: create third-party accounts under an identity's email
|
|
64
|
+
* and re-auth them (AgentAccount Slice 1). Targets the Sente API
|
|
65
|
+
* (`/v1/registrations`, `/v1/runs`) with the stored API key.
|
|
66
|
+
*
|
|
67
|
+
* Note: `register` is the third-party signup — distinct from `sente login`,
|
|
68
|
+
* which is Auth0 sign-in to Sente itself. Re-auth of a third-party account is
|
|
69
|
+
* `relogin`.
|
|
70
|
+
*/
|
|
71
|
+
function registerRegistrationCommands(program, globalOpts) {
|
|
72
|
+
program
|
|
73
|
+
.command('register')
|
|
74
|
+
.description('Register a third-party account under an identity (drives the browser + email verification)')
|
|
75
|
+
.argument('<appUrl>', 'signup URL of the third-party app')
|
|
76
|
+
.requiredOption('--identity <ref>', 'identity id, email, or local-part')
|
|
77
|
+
.option('--username <u>', 'desired username (default: derived server-side)')
|
|
78
|
+
.option('--password <p>', 'desired password (default: generated server-side)')
|
|
79
|
+
.option('--no-wait', "return the run id immediately instead of waiting for it to finish")
|
|
80
|
+
.action(async (appUrl, cmdOpts) => {
|
|
81
|
+
const opts = globalOpts();
|
|
82
|
+
try {
|
|
83
|
+
const client = new client_1.GatewayClient();
|
|
84
|
+
const identityId = await (0, identityRef_1.resolveIdentityId)(client, cmdOpts.identity);
|
|
85
|
+
const credentials = {};
|
|
86
|
+
if (cmdOpts.username)
|
|
87
|
+
credentials.username = cmdOpts.username;
|
|
88
|
+
if (cmdOpts.password)
|
|
89
|
+
credentials.password = cmdOpts.password;
|
|
90
|
+
const { registration, run } = await client.request('/v1/registrations', {
|
|
91
|
+
method: 'POST',
|
|
92
|
+
body: { identityId, appUrl, ...(Object.keys(credentials).length ? { credentials } : {}) },
|
|
93
|
+
});
|
|
94
|
+
if (cmdOpts.wait === false) {
|
|
95
|
+
(0, output_1.printSuccess)({ registration, run }, `Started run ${run.id} (registration ${registration.id})`, opts);
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
const final = await waitForRun(client, run.id, opts);
|
|
99
|
+
renderRunOutcome(registration, final, opts);
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
process.exit((0, output_1.printError)(err, opts));
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
program
|
|
106
|
+
.command('registrations')
|
|
107
|
+
.description('List third-party accounts and their latest run status')
|
|
108
|
+
.option('--identity <ref>', 'filter to one identity (id, email, or local-part)')
|
|
109
|
+
.action(async (cmdOpts) => {
|
|
110
|
+
const opts = globalOpts();
|
|
111
|
+
try {
|
|
112
|
+
const client = new client_1.GatewayClient();
|
|
113
|
+
const identityId = cmdOpts.identity ? await (0, identityRef_1.resolveIdentityId)(client, cmdOpts.identity) : undefined;
|
|
114
|
+
const rows = await client.request('/v1/registrations', {
|
|
115
|
+
query: { identityId },
|
|
116
|
+
});
|
|
117
|
+
(0, output_1.printSuccess)(rows, () => {
|
|
118
|
+
if (rows.length === 0) {
|
|
119
|
+
process.stdout.write('No registrations yet. Create one with `sente register <appUrl> --identity <ref>`.\n');
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
for (const r of rows) {
|
|
123
|
+
const runStatus = r.latestRun ? r.latestRun.status : '-';
|
|
124
|
+
process.stdout.write(`${r.appUrl} ${r.status} run:${runStatus} ${r.id}\n`);
|
|
125
|
+
}
|
|
126
|
+
}, opts);
|
|
127
|
+
}
|
|
128
|
+
catch (err) {
|
|
129
|
+
process.exit((0, output_1.printError)(err, opts));
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
program
|
|
133
|
+
.command('relogin')
|
|
134
|
+
.description('Re-authenticate an existing third-party account (F4) — not `sente login`, which is Sente sign-in')
|
|
135
|
+
.argument('<registrationId>', 'registration id (reg_…)')
|
|
136
|
+
.option('--no-wait', 'return the run id immediately instead of waiting for it to finish')
|
|
137
|
+
.action(async (registrationId, cmdOpts) => {
|
|
138
|
+
const opts = globalOpts();
|
|
139
|
+
try {
|
|
140
|
+
const client = new client_1.GatewayClient();
|
|
141
|
+
const { registration, run } = await client.request(`/v1/registrations/${registrationId}/login`, { method: 'POST' });
|
|
142
|
+
if (cmdOpts.wait === false) {
|
|
143
|
+
(0, output_1.printSuccess)({ registration, run }, `Started run ${run.id} (registration ${registration.id})`, opts);
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
const final = await waitForRun(client, run.id, opts);
|
|
147
|
+
renderRunOutcome(registration, final, opts);
|
|
148
|
+
}
|
|
149
|
+
catch (err) {
|
|
150
|
+
process.exit((0, output_1.printError)(err, opts));
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
program
|
|
154
|
+
.command('credentials')
|
|
155
|
+
.description("Print an account's vaulted username/password/origin (for handoff; audited server-side)")
|
|
156
|
+
.argument('<registrationId>', 'registration id (reg_…)')
|
|
157
|
+
.action(async (registrationId) => {
|
|
158
|
+
const opts = globalOpts();
|
|
159
|
+
try {
|
|
160
|
+
const creds = await new client_1.GatewayClient().request(`/v1/registrations/${registrationId}/credentials`);
|
|
161
|
+
(0, output_1.printSuccess)(creds, () => process.stdout.write(`username: ${creds.username}\npassword: ${creds.password}\norigin: ${creds.origin}\n`), opts);
|
|
162
|
+
}
|
|
163
|
+
catch (err) {
|
|
164
|
+
process.exit((0, output_1.printError)(err, opts));
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
const run = program.command('run').description('Inspect and control register/login runs');
|
|
168
|
+
run
|
|
169
|
+
.command('show', { isDefault: true })
|
|
170
|
+
.description("Show a run's status, error, and live-view URL")
|
|
171
|
+
.argument('<runId>', 'run id (run_…)')
|
|
172
|
+
.action(async (runId) => {
|
|
173
|
+
const opts = globalOpts();
|
|
174
|
+
try {
|
|
175
|
+
const r = await new client_1.GatewayClient().request(`/v1/runs/${runId}`);
|
|
176
|
+
(0, output_1.printSuccess)(r, () => process.stdout.write(`${r.type} run ${r.id}\n status: ${r.status}\n error: ${r.error ? `${r.error.code}${r.error.detail ? ` — ${r.error.detail}` : ''}` : '-'}\n live view: ${r.liveViewUrl ?? '-'}\n`), opts);
|
|
177
|
+
}
|
|
178
|
+
catch (err) {
|
|
179
|
+
process.exit((0, output_1.printError)(err, opts));
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
run
|
|
183
|
+
.command('resume')
|
|
184
|
+
.description('Resume a blocked run after human takeover in the live view')
|
|
185
|
+
.argument('<runId>', 'run id (run_…)')
|
|
186
|
+
.action(async (runId) => {
|
|
187
|
+
const opts = globalOpts();
|
|
188
|
+
try {
|
|
189
|
+
const r = await new client_1.GatewayClient().request(`/v1/runs/${runId}/resume`, { method: 'POST' });
|
|
190
|
+
(0, output_1.printSuccess)(r, `Resumed run ${r.id} (${r.status})`, opts);
|
|
191
|
+
}
|
|
192
|
+
catch (err) {
|
|
193
|
+
process.exit((0, output_1.printError)(err, opts));
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
run
|
|
197
|
+
.command('abort')
|
|
198
|
+
.description('Abort a non-terminal run')
|
|
199
|
+
.argument('<runId>', 'run id (run_…)')
|
|
200
|
+
.action(async (runId) => {
|
|
201
|
+
const opts = globalOpts();
|
|
202
|
+
try {
|
|
203
|
+
const r = await new client_1.GatewayClient().request(`/v1/runs/${runId}/abort`, { method: 'POST' });
|
|
204
|
+
(0, output_1.printSuccess)(r, `Aborted run ${r.id} (${r.status})`, opts);
|
|
205
|
+
}
|
|
206
|
+
catch (err) {
|
|
207
|
+
process.exit((0, output_1.printError)(err, opts));
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=registration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registration.js","sourceRoot":"","sources":["../../src/commands/registration.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -8,6 +8,7 @@ const token_1 = require("./commands/token");
|
|
|
8
8
|
const identity_1 = require("./commands/identity");
|
|
9
9
|
const inbox_1 = require("./commands/inbox");
|
|
10
10
|
const webhook_1 = require("./commands/webhook");
|
|
11
|
+
const registration_1 = require("./commands/registration");
|
|
11
12
|
const update_1 = require("./update");
|
|
12
13
|
// Fire-and-forget npm registry check. Cached for 24h. Prints a one-line
|
|
13
14
|
// nudge to stderr if a newer CLI is available. Never blocks the user's
|
|
@@ -31,6 +32,7 @@ const globalOpts = () => program.opts();
|
|
|
31
32
|
(0, identity_1.registerIdentityCommands)(program, globalOpts);
|
|
32
33
|
(0, inbox_1.registerInboxCommands)(program, globalOpts);
|
|
33
34
|
(0, webhook_1.registerWebhookCommands)(program, globalOpts);
|
|
35
|
+
(0, registration_1.registerRegistrationCommands)(program, globalOpts);
|
|
34
36
|
program.parseAsync(process.argv).catch((err) => {
|
|
35
37
|
// Defensive: command actions handle their own errors. This only catches
|
|
36
38
|
// setup-time errors (e.g. unknown subcommand).
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,yCAAoC;AACpC,4CAAwD;AACxD,8CAA0D;AAC1D,4CAAwD;AACxD,kDAA+D;AAC/D,4CAAyD;AACzD,gDAA6D;AAC7D,qCAA0D;AAG1D,wEAAwE;AACxE,uEAAuE;AACvE,6DAA6D;AAC7D,KAAK,IAAA,0BAAiB,GAAE,CAAC;AAEzB,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,6FAA6F,CAAC;KAC1G,OAAO,CAAC,oBAAW,CAAC;KACpB,MAAM,CAAC,QAAQ,EAAE,oDAAoD,CAAC,CAAC;AAE1E;;;;GAIG;AACH,MAAM,UAAU,GAAG,GAAe,EAAE,CAAC,OAAO,CAAC,IAAI,EAAc,CAAC;AAEhE,IAAA,4BAAoB,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAC1C,IAAA,8BAAqB,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAC3C,IAAA,4BAAoB,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAC1C,IAAA,mCAAwB,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAC9C,IAAA,6BAAqB,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAC3C,IAAA,iCAAuB,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,yCAAoC;AACpC,4CAAwD;AACxD,8CAA0D;AAC1D,4CAAwD;AACxD,kDAA+D;AAC/D,4CAAyD;AACzD,gDAA6D;AAC7D,0DAAuE;AACvE,qCAA0D;AAG1D,wEAAwE;AACxE,uEAAuE;AACvE,6DAA6D;AAC7D,KAAK,IAAA,0BAAiB,GAAE,CAAC;AAEzB,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,6FAA6F,CAAC;KAC1G,OAAO,CAAC,oBAAW,CAAC;KACpB,MAAM,CAAC,QAAQ,EAAE,oDAAoD,CAAC,CAAC;AAE1E;;;;GAIG;AACH,MAAM,UAAU,GAAG,GAAe,EAAE,CAAC,OAAO,CAAC,IAAI,EAAc,CAAC;AAEhE,IAAA,4BAAoB,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAC1C,IAAA,8BAAqB,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAC3C,IAAA,4BAAoB,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAC1C,IAAA,mCAAwB,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAC9C,IAAA,6BAAqB,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAC3C,IAAA,iCAAuB,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAC7C,IAAA,2CAA4B,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAElD,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAC7C,wEAAwE;IACxE,+CAA+C;IAC/C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,OAAO,IAAI,GAAG,IAAI,CAAC,CAAC;IACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sente-labs/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.0",
|
|
4
4
|
"description": "Sente CLI -- give your AI agents managed email identities: create identities, receive and react to email, manage webhooks, from your terminal and Claude Code.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"sente": "dist/index.js"
|