@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.
@@ -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;AAE7C,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"}
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.13.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"