@ravi-hq/ravi 0.7.2 → 0.7.3
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/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +110 -6
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +1 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -106
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.d.ts
CHANGED
|
@@ -38,7 +38,7 @@ export declare function performLogin(): Promise<LoginResult>;
|
|
|
38
38
|
* All CLI commands exposed by the Ravi plugin.
|
|
39
39
|
*
|
|
40
40
|
* OpenClaw registers these so the user can run `openclaw ravi login`,
|
|
41
|
-
* `openclaw
|
|
41
|
+
* `openclaw ravi onboard`, `openclaw ravi status`, etc.
|
|
42
42
|
*/
|
|
43
43
|
export declare const cliCommands: CliCommand[];
|
|
44
44
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAIxE,uDAAuD;AACvD,MAAM,WAAW,aAAa;IAC5B,iGAAiG;IACjG,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,+EAA+E;AAC/E,MAAM,WAAW,UAAU;IACzB,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,aAAa,EAAE,CAAC;IACvB;;;;;;OAMG;IACH,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACxE;AAID,2EAA2E;AAC3E,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,mBAAmB,CAAC;CAChC;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC,CA2FzD;AAID;;;;;GAKG;AACH,eAAO,MAAM,WAAW,EAAE,UAAU,EAqNnC,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { RAVI_API_URL } from "./config.js";
|
|
2
2
|
import { RaviClient } from "./client.js";
|
|
3
|
-
import { loadAuth, saveAuth, loadConfig } from "./auth.js";
|
|
3
|
+
import { loadAuth, saveAuth, saveConfig, loadConfig } from "./auth.js";
|
|
4
|
+
import { getRaviRuntime } from "./runtime.js";
|
|
4
5
|
/**
|
|
5
6
|
* Run the full device-code authentication flow: initiate → poll → save credentials.
|
|
6
7
|
*/
|
|
@@ -73,7 +74,7 @@ export async function performLogin() {
|
|
|
73
74
|
* All CLI commands exposed by the Ravi plugin.
|
|
74
75
|
*
|
|
75
76
|
* OpenClaw registers these so the user can run `openclaw ravi login`,
|
|
76
|
-
* `openclaw
|
|
77
|
+
* `openclaw ravi onboard`, `openclaw ravi status`, etc.
|
|
77
78
|
*/
|
|
78
79
|
export const cliCommands = [
|
|
79
80
|
// ── login ───────────────────────────────────────────────────────────────
|
|
@@ -85,6 +86,109 @@ export const cliCommands = [
|
|
|
85
86
|
return "Login complete.";
|
|
86
87
|
},
|
|
87
88
|
},
|
|
89
|
+
// ── onboard ─────────────────────────────────────────────────────────────
|
|
90
|
+
{
|
|
91
|
+
name: "onboard",
|
|
92
|
+
description: "Set up Ravi: authenticate, select identity, and configure OpenClaw.",
|
|
93
|
+
handler: async (_args, _config) => {
|
|
94
|
+
// 1. Check if already authenticated
|
|
95
|
+
const existing = loadConfig();
|
|
96
|
+
let client;
|
|
97
|
+
let tokenData;
|
|
98
|
+
if (existing?.management_key) {
|
|
99
|
+
process.stderr.write("Already authenticated. Proceeding to identity selection.\n");
|
|
100
|
+
client = new RaviClient({ apiUrl: RAVI_API_URL, apiKey: existing.management_key });
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
// 2. Run device code login flow
|
|
104
|
+
const result = await performLogin();
|
|
105
|
+
client = result.client;
|
|
106
|
+
tokenData = result.tokenData;
|
|
107
|
+
}
|
|
108
|
+
// 3. Handle identity selection
|
|
109
|
+
const config = loadConfig();
|
|
110
|
+
let identityKey = config.identity_key;
|
|
111
|
+
let identityUuid = config.identity_uuid;
|
|
112
|
+
let identityName = config.identity_name;
|
|
113
|
+
if (tokenData?.identity_key && tokenData.identity) {
|
|
114
|
+
// Signup path — identity_key already in response
|
|
115
|
+
identityKey = tokenData.identity_key;
|
|
116
|
+
identityUuid = tokenData.identity.uuid;
|
|
117
|
+
identityName = tokenData.identity.name;
|
|
118
|
+
saveConfig({ ...config, identity_key: identityKey, identity_uuid: identityUuid, identity_name: identityName });
|
|
119
|
+
}
|
|
120
|
+
else if (!identityKey) {
|
|
121
|
+
// Login path — need to select an identity
|
|
122
|
+
const identities = tokenData?.identities ?? await client.listIdentities();
|
|
123
|
+
if (identities.length === 0) {
|
|
124
|
+
return "No identities found. Create one first, then re-run 'openclaw ravi onboard'.";
|
|
125
|
+
}
|
|
126
|
+
let selected;
|
|
127
|
+
if (identities.length === 1) {
|
|
128
|
+
selected = identities[0];
|
|
129
|
+
process.stderr.write(`Auto-selected identity: ${selected.name}\n`);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
// Show list, prompt user to choose
|
|
133
|
+
process.stderr.write("\nAvailable identities:\n");
|
|
134
|
+
for (let i = 0; i < identities.length; i++) {
|
|
135
|
+
process.stderr.write(` ${i + 1}. ${identities[i].name} (${identities[i].uuid})\n`);
|
|
136
|
+
}
|
|
137
|
+
process.stderr.write("\nSelect identity (number): ");
|
|
138
|
+
// Read from stdin
|
|
139
|
+
const choice = await new Promise((resolve) => {
|
|
140
|
+
const stdin = process.stdin;
|
|
141
|
+
stdin.setEncoding("utf-8");
|
|
142
|
+
stdin.once("data", (data) => resolve(data.trim()));
|
|
143
|
+
stdin.resume();
|
|
144
|
+
});
|
|
145
|
+
const idx = parseInt(choice, 10) - 1;
|
|
146
|
+
if (isNaN(idx) || idx < 0 || idx >= identities.length) {
|
|
147
|
+
return "Invalid selection. Run 'openclaw ravi onboard' to try again.";
|
|
148
|
+
}
|
|
149
|
+
selected = identities[idx];
|
|
150
|
+
}
|
|
151
|
+
// Create identity key
|
|
152
|
+
const keyResp = await client.createIdentityKey(selected.uuid, "openclaw");
|
|
153
|
+
identityKey = keyResp.key;
|
|
154
|
+
identityUuid = selected.uuid;
|
|
155
|
+
identityName = selected.name;
|
|
156
|
+
saveConfig({ ...config, identity_key: identityKey, identity_uuid: identityUuid, identity_name: identityName });
|
|
157
|
+
}
|
|
158
|
+
// 4. Auto-configure OpenClaw via runtime.config
|
|
159
|
+
if (identityUuid) {
|
|
160
|
+
try {
|
|
161
|
+
const runtime = getRaviRuntime();
|
|
162
|
+
const ocConfig = runtime.config.loadConfig();
|
|
163
|
+
// Deep-merge plugin config
|
|
164
|
+
const plugins = (ocConfig.plugins ?? {});
|
|
165
|
+
const entries = (plugins.entries ?? {});
|
|
166
|
+
const ravi = (entries.ravi ?? {});
|
|
167
|
+
const raviConfig = (ravi.config ?? {});
|
|
168
|
+
raviConfig.identityUuid = identityUuid;
|
|
169
|
+
ravi.config = raviConfig;
|
|
170
|
+
entries.ravi = ravi;
|
|
171
|
+
plugins.entries = entries;
|
|
172
|
+
ocConfig.plugins = plugins;
|
|
173
|
+
// Add secrets provider
|
|
174
|
+
const secrets = (ocConfig.secrets ?? {});
|
|
175
|
+
const providers = (secrets.providers ?? {});
|
|
176
|
+
providers.ravi = { source: "exec", command: "ravi-secrets" };
|
|
177
|
+
secrets.providers = providers;
|
|
178
|
+
ocConfig.secrets = secrets;
|
|
179
|
+
await runtime.config.writeConfigFile(ocConfig);
|
|
180
|
+
process.stderr.write("OpenClaw config updated automatically.\n");
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
// Runtime not available — print manual instructions
|
|
184
|
+
process.stderr.write("\nCould not auto-configure OpenClaw. Run these commands manually:\n\n");
|
|
185
|
+
process.stderr.write(` openclaw config set plugins.entries.ravi.config.identityUuid "${identityUuid}"\n`);
|
|
186
|
+
process.stderr.write(` openclaw config set secrets.providers.ravi '{"source":"exec","command":"ravi-secrets"}'\n\n`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return "Onboard complete.";
|
|
190
|
+
},
|
|
191
|
+
},
|
|
88
192
|
// ── status ──────────────────────────────────────────────────────────────
|
|
89
193
|
{
|
|
90
194
|
name: "status",
|
|
@@ -93,7 +197,7 @@ export const cliCommands = [
|
|
|
93
197
|
const auth = loadAuth();
|
|
94
198
|
const config = loadConfig();
|
|
95
199
|
if (!auth?.management_key) {
|
|
96
|
-
return `Not logged in. Run 'openclaw
|
|
200
|
+
return `Not logged in. Run 'openclaw ravi onboard' to authenticate.`;
|
|
97
201
|
}
|
|
98
202
|
const maskKey = (key) => `${key.slice(0, 12)}...${key.slice(-4)}`;
|
|
99
203
|
let output = `Authenticated to ${RAVI_API_URL}\n`;
|
|
@@ -102,13 +206,13 @@ export const cliCommands = [
|
|
|
102
206
|
output += `Identity key: ${maskKey(config.identity_key)}\n`;
|
|
103
207
|
}
|
|
104
208
|
else {
|
|
105
|
-
output += `Identity key: not set (run 'openclaw
|
|
209
|
+
output += `Identity key: not set (run 'openclaw ravi onboard' to configure)\n`;
|
|
106
210
|
}
|
|
107
211
|
if (config?.identity_name || config?.identity_uuid) {
|
|
108
212
|
output += `\nIdentity: ${config.identity_name ?? "(unnamed)"} (${config.identity_uuid ?? ""})\n`;
|
|
109
213
|
}
|
|
110
214
|
else {
|
|
111
|
-
output += `\nNo identity selected. Run 'openclaw
|
|
215
|
+
output += `\nNo identity selected. Run 'openclaw ravi onboard' to select one.\n`;
|
|
112
216
|
}
|
|
113
217
|
if (auth.user_email) {
|
|
114
218
|
output += `Account: ${auth.user_email}\n`;
|
|
@@ -127,7 +231,7 @@ export const cliCommands = [
|
|
|
127
231
|
handler: async (args, _config) => {
|
|
128
232
|
const auth = loadConfig();
|
|
129
233
|
if (!auth?.management_key) {
|
|
130
|
-
return "Error: Management key required. Only the main agent can create identity keys.\nRun 'openclaw
|
|
234
|
+
return "Error: Management key required. Only the main agent can create identity keys.\nRun 'openclaw ravi onboard' to authenticate with a management key.";
|
|
131
235
|
}
|
|
132
236
|
const client = new RaviClient({ apiUrl: RAVI_API_URL, apiKey: auth.management_key });
|
|
133
237
|
const identityUuid = args[0];
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAmB,MAAM,WAAW,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAwC9C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,MAAM,GAAG,YAAY,CAAC;IAE5B,oCAAoC;IACpC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,mBAAmB,EAAE;QACzD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChD,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QACrD,MAAM,IAAI,KAAK,CACb,6CAA6C,QAAQ,CAAC,MAAM,MAAM,MAAM,EAAE,CAC3E,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAMlC,CAAC;IAEF,6CAA6C;IAC7C,sFAAsF;IACtF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC3C,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;IACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,SAAS,IAAI,CAAC,CAAC;IACjE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC;IACpD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAEvD,qDAAqD;IACrD,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACrD,IAAI,wBAAwB,GAAG,CAAC,CAAC;IAEjC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;QAEhE,IAAI,aAAuB,CAAC;QAC5B,IAAI,CAAC;YACH,aAAa,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,yBAAyB,EAAE;gBAC9D,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;aACxD,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB,EAAE,CAAC;YAC3B,IAAI,wBAAwB,IAAI,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,KAAK,CACb,uCAAuC,wBAAwB,sBAAsB;oBACrF,0CAA0C,MAAM,gBAAgB,CACjE,CAAC;YACJ,CAAC;YACD,SAAS;QACX,CAAC;QAED,wBAAwB,GAAG,CAAC,CAAC;QAE7B,IAAI,aAAa,CAAC,EAAE,EAAE,CAAC;YACrB,MAAM,SAAS,GAAG,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAwB,CAAC;YAEtE,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,cAAc,EAAE,CAAC,CAAC;YAC5E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,SAAS,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,CAAC;YAEvE,MAAM,QAAQ,GAAe;gBAC3B,cAAc,EAAE,SAAS,CAAC,cAAc;gBACxC,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK;aACjC,CAAC;YAEF,8CAA8C;YAC9C,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAErE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;QAChE,CAAC;QAED,mEAAmE;QACnE,MAAM,KAAK,GAAG,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAE1D,CAAC;QACF,IAAI,KAAK,CAAC,KAAK,KAAK,uBAAuB,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CACb,4BAA4B,KAAK,CAAC,KAAK,IAAI,QAAQ,aAAa,CAAC,MAAM,EAAE,EAAE,CAC5E,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;AAC5D,CAAC;AAED,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAiB;IACvC,2EAA2E;IAC3E;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EACT,2EAA2E;QAC7E,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAChC,MAAM,YAAY,EAAE,CAAC;YACrB,OAAO,iBAAiB,CAAC;QAC3B,CAAC;KACF;IAED,2EAA2E;IAC3E;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EACT,qEAAqE;QACvE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAChC,oCAAoC;YACpC,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC;YAC9B,IAAI,MAAkB,CAAC;YACvB,IAAI,SAA0C,CAAC;YAE/C,IAAI,QAAQ,EAAE,cAAc,EAAE,CAAC;gBAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;gBACnF,MAAM,GAAG,IAAI,UAAU,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC;YACrF,CAAC;iBAAM,CAAC;gBACN,gCAAgC;gBAChC,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;gBACpC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;gBACvB,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;YAC/B,CAAC;YAED,+BAA+B;YAC/B,MAAM,MAAM,GAAG,UAAU,EAAG,CAAC;YAC7B,IAAI,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC;YACtC,IAAI,YAAY,GAAG,MAAM,CAAC,aAAa,CAAC;YACxC,IAAI,YAAY,GAAG,MAAM,CAAC,aAAa,CAAC;YAExC,IAAI,SAAS,EAAE,YAAY,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;gBAClD,iDAAiD;gBACjD,WAAW,GAAG,SAAS,CAAC,YAAY,CAAC;gBACrC,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACvC,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACvC,UAAU,CAAC,EAAE,GAAG,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC;YACjH,CAAC;iBAAM,IAAI,CAAC,WAAW,EAAE,CAAC;gBACxB,0CAA0C;gBAC1C,MAAM,UAAU,GAAG,SAAS,EAAE,UAAU,IAAI,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;gBAE1E,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC5B,OAAO,6EAA6E,CAAC;gBACvF,CAAC;gBAED,IAAI,QAAwC,CAAC;gBAE7C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC5B,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;oBACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC;gBACrE,CAAC;qBAAM,CAAC;oBACN,mCAAmC;oBACnC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;oBAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC;oBACtF,CAAC;oBACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;oBAErD,kBAAkB;oBAClB,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;wBACnD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;wBAC5B,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;wBAC3B,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;wBAC3D,KAAK,CAAC,MAAM,EAAE,CAAC;oBACjB,CAAC,CAAC,CAAC;oBAEH,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;oBACrC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;wBACtD,OAAO,8DAA8D,CAAC;oBACxE,CAAC;oBACD,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;gBAC7B,CAAC;gBAED,sBAAsB;gBACtB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBAC1E,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;gBAC1B,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;gBAC7B,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;gBAC7B,UAAU,CAAC,EAAE,GAAG,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC;YACjH,CAAC;YAED,gDAAgD;YAChD,IAAI,YAAY,EAAE,CAAC;gBACjB,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;oBACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;oBAE7C,2BAA2B;oBAC3B,MAAM,OAAO,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAA4B,CAAC;oBACpE,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAA4B,CAAC;oBACnE,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAA4B,CAAC;oBAC7D,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAA4B,CAAC;oBAClE,UAAU,CAAC,YAAY,GAAG,YAAY,CAAC;oBACvC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;oBACzB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;oBACpB,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;oBAC1B,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;oBAE3B,uBAAuB;oBACvB,MAAM,OAAO,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAA4B,CAAC;oBACpE,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAA4B,CAAC;oBACvE,SAAS,CAAC,IAAI,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;oBAC7D,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;oBAC9B,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;oBAE3B,MAAM,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;oBAC/C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;gBACnE,CAAC;gBAAC,MAAM,CAAC;oBACP,oDAAoD;oBACpD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC;oBAC9F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mEAAmE,YAAY,KAAK,CAAC,CAAC;oBAC3G,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+FAA+F,CAAC,CAAC;gBACxH,CAAC;YACH,CAAC;YAED,OAAO,mBAAmB,CAAC;QAC7B,CAAC;KACF;IAED,2EAA2E;IAC3E;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,kDAAkD;QAC/D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAChC,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;YAE5B,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC;gBAC1B,OAAO,6DAA6D,CAAC;YACvE,CAAC;YAED,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAE1E,IAAI,MAAM,GAAG,oBAAoB,YAAY,IAAI,CAAC;YAClD,MAAM,IAAI,qBAAqB,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YAEhE,IAAI,MAAM,EAAE,YAAY,EAAE,CAAC;gBACzB,MAAM,IAAI,mBAAmB,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC;YAChE,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,sEAAsE,CAAC;YACnF,CAAC;YAED,IAAI,MAAM,EAAE,aAAa,IAAI,MAAM,EAAE,aAAa,EAAE,CAAC;gBACnD,MAAM,IAAI,eAAe,MAAM,CAAC,aAAa,IAAI,WAAW,KAAK,MAAM,CAAC,aAAa,IAAI,EAAE,KAAK,CAAC;YACnG,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,sEAAsE,CAAC;YACnF,CAAC;YAED,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,MAAM,IAAI,YAAY,IAAI,CAAC,UAAU,IAAI,CAAC;YAC5C,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;KACF;IAED,yEAAyE;IACzE;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,mEAAmE;QACrE,IAAI,EAAE;YACJ,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE;YAChD,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE;SAC9C;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;YAC/B,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC;gBAC1B,OAAO,mJAAmJ,CAAC;YAC7J,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;YAErF,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,IAAI,CAAC;oBACH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;oBACjD,IAAI,MAAM,GAAG,0FAA0F,CAAC;oBACxG,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;wBAC5B,MAAM,IAAI,KAAK,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC;oBACzC,CAAC;oBACD,OAAO,MAAM,CAAC;gBAChB,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAChE,OAAO,6BAA6B,MAAM,EAAE,CAAC;gBAC/C,CAAC;YACH,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,aAAa,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAEnD,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;gBAEpE,IAAI,MAAM,GAAG,2BAA2B,CAAC;gBACzC,MAAM,IAAI,sCAAsC,CAAC;gBACjD,MAAM,IAAI,kEAAkE,OAAO,CAAC,GAAG,KAAK,CAAC;gBAC7F,MAAM,IAAI,mEAAmE,YAAY,KAAK,CAAC;gBAC/F,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChE,OAAO,gCAAgC,MAAM,EAAE,CAAC;YAClD,CAAC;QACH,CAAC;KACF;CAEF,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export type { EmailAccountConfig, EmailThreadContext, EmailInboundEnvelope } fro
|
|
|
19
19
|
export type { CliCommand } from "./cli.js";
|
|
20
20
|
export { setRaviRuntime, getRaviRuntime } from "./runtime.js";
|
|
21
21
|
export { acquirePollingClient, releasePollingClient, resetPollingPool } from "./polling-pool.js";
|
|
22
|
-
import type { PluginRuntimeSubset
|
|
22
|
+
import type { PluginRuntimeSubset } from "./types.js";
|
|
23
23
|
/**
|
|
24
24
|
* Identity-scoped tools — available to all agents (both main and sub-agents).
|
|
25
25
|
*
|
|
@@ -86,8 +86,6 @@ interface PluginAPI {
|
|
|
86
86
|
}) => void, opts?: {
|
|
87
87
|
commands?: string[];
|
|
88
88
|
}): void;
|
|
89
|
-
/** Register a provider for OpenClaw's standard auth system. */
|
|
90
|
-
registerProvider(provider: ProviderPlugin): void;
|
|
91
89
|
/** Register a plugin lifecycle hook. */
|
|
92
90
|
on(hookName: string, handler: (...args: unknown[]) => unknown, opts?: {
|
|
93
91
|
priority?: number;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,YAAY,EACV,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,UAAU,EACV,aAAa,EACb,WAAW,EACX,YAAY,EACZ,WAAW,EACX,cAAc,EACd,UAAU,EACV,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,YAAY,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAEtI,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACvD,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,YAAY,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACjF,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvE,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACxG,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAmBjG,OAAO,KAAK,EAAoB,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -14,7 +14,7 @@ export { acquirePollingClient, releasePollingClient, resetPollingPool } from "./
|
|
|
14
14
|
// ─── Value Imports ───────────────────────────────────────────────────────────
|
|
15
15
|
import { RAVI_API_URL } from "./config.js";
|
|
16
16
|
import { RaviClient } from "./client.js";
|
|
17
|
-
import { resolveApiKey, MGMT_KEY_PREFIX
|
|
17
|
+
import { resolveApiKey, MGMT_KEY_PREFIX } from "./auth.js";
|
|
18
18
|
import { raviEmailChannel } from "./channels/email.js";
|
|
19
19
|
import { raviEmailTrustedChannel } from "./channels/email-trusted.js";
|
|
20
20
|
import { identityTools } from "./tools/identity.js";
|
|
@@ -149,113 +149,9 @@ export default function registerPlugin(api) {
|
|
|
149
149
|
});
|
|
150
150
|
}
|
|
151
151
|
}, { commands: ["ravi"] });
|
|
152
|
-
// ── Register provider auth (replaces CLI onboard) ───────────────────────
|
|
153
|
-
api.registerProvider({
|
|
154
|
-
id: "ravi",
|
|
155
|
-
label: "Ravi Identity",
|
|
156
|
-
auth: [
|
|
157
|
-
{
|
|
158
|
-
id: "device-code",
|
|
159
|
-
label: "Ravi Device Code",
|
|
160
|
-
hint: "Sign in with Google to get your Ravi identity",
|
|
161
|
-
kind: "device_code",
|
|
162
|
-
run: async (ctx) => {
|
|
163
|
-
// 1. Device code flow
|
|
164
|
-
const progress = ctx.prompter.progress("Starting Ravi authentication...");
|
|
165
|
-
const deviceResp = await fetch(`${RAVI_API_URL}/api/auth/device/`, {
|
|
166
|
-
method: "POST",
|
|
167
|
-
headers: { "Content-Type": "application/json" },
|
|
168
|
-
});
|
|
169
|
-
if (!deviceResp.ok) {
|
|
170
|
-
progress.stop("Failed to start device code flow");
|
|
171
|
-
const detail = await deviceResp.text().catch(() => "");
|
|
172
|
-
throw new Error(`Device code initiation failed (HTTP ${deviceResp.status}): ${detail}`);
|
|
173
|
-
}
|
|
174
|
-
const deviceData = await deviceResp.json();
|
|
175
|
-
// 2. Show sign-in URL (primary mechanism) and try opening browser (best effort)
|
|
176
|
-
const verifyUrl = `${deviceData.verification_uri}?user_code=${deviceData.user_code}`;
|
|
177
|
-
progress.stop("Ready to sign in");
|
|
178
|
-
await ctx.prompter.note(`Visit ${verifyUrl} and sign in with Google\n\nCode: ${deviceData.user_code}`, "Ravi");
|
|
179
|
-
// Best-effort browser open — may fail silently on headless/remote
|
|
180
|
-
await ctx.openUrl(verifyUrl).catch(() => { });
|
|
181
|
-
// 3. Poll for authorization (long-poll with wait=true)
|
|
182
|
-
const pollProgress = ctx.prompter.progress("Waiting for sign-in...");
|
|
183
|
-
const tokenResp = await fetch(`${RAVI_API_URL}/api/auth/device/token/`, {
|
|
184
|
-
method: "POST",
|
|
185
|
-
headers: { "Content-Type": "application/json" },
|
|
186
|
-
body: JSON.stringify({ device_code: deviceData.device_code, wait: true }),
|
|
187
|
-
});
|
|
188
|
-
const tokenData = await tokenResp.json();
|
|
189
|
-
if (!tokenData.management_key) {
|
|
190
|
-
pollProgress.stop("Authentication failed");
|
|
191
|
-
throw new Error(tokenData.error_description || "Device code flow failed");
|
|
192
|
-
}
|
|
193
|
-
pollProgress.stop("Authenticated!");
|
|
194
|
-
// 4. Save keys to ~/.ravi/config.json
|
|
195
|
-
const authConfig = {
|
|
196
|
-
management_key: tokenData.management_key,
|
|
197
|
-
user_email: tokenData.user?.email,
|
|
198
|
-
};
|
|
199
|
-
// Handle signup (identity_key in response) vs login (identities list)
|
|
200
|
-
let identityUuid;
|
|
201
|
-
if (tokenData.identity_key && tokenData.identity) {
|
|
202
|
-
authConfig.identity_key = tokenData.identity_key;
|
|
203
|
-
authConfig.identity_uuid = tokenData.identity.uuid;
|
|
204
|
-
authConfig.identity_name = tokenData.identity.name;
|
|
205
|
-
identityUuid = tokenData.identity.uuid;
|
|
206
|
-
}
|
|
207
|
-
else if (tokenData.identities && tokenData.identities.length > 0) {
|
|
208
|
-
// Pick first identity, create key
|
|
209
|
-
const identity = tokenData.identities[0];
|
|
210
|
-
identityUuid = identity.uuid;
|
|
211
|
-
const client = new RaviClient({ apiUrl: RAVI_API_URL, apiKey: tokenData.management_key });
|
|
212
|
-
const keyResp = await client.createIdentityKey(identity.uuid, "openclaw");
|
|
213
|
-
authConfig.identity_key = keyResp.key;
|
|
214
|
-
authConfig.identity_uuid = identity.uuid;
|
|
215
|
-
authConfig.identity_name = identity.name;
|
|
216
|
-
}
|
|
217
|
-
saveConfig(authConfig);
|
|
218
|
-
// 5. Return result with configPatch — OpenClaw auto-applies this
|
|
219
|
-
const profileId = "ravi:default";
|
|
220
|
-
const result = {
|
|
221
|
-
profiles: [{
|
|
222
|
-
profileId,
|
|
223
|
-
credential: {
|
|
224
|
-
type: "api_key",
|
|
225
|
-
provider: "ravi",
|
|
226
|
-
key: authConfig.identity_key || authConfig.management_key || "",
|
|
227
|
-
},
|
|
228
|
-
}],
|
|
229
|
-
notes: [
|
|
230
|
-
`Signed in as ${tokenData.user?.email}`,
|
|
231
|
-
authConfig.identity_name ? `Identity: ${authConfig.identity_name}` : "No identity created yet",
|
|
232
|
-
],
|
|
233
|
-
};
|
|
234
|
-
// configPatch to auto-configure the plugin
|
|
235
|
-
if (identityUuid) {
|
|
236
|
-
result.configPatch = {
|
|
237
|
-
plugins: {
|
|
238
|
-
entries: {
|
|
239
|
-
ravi: {
|
|
240
|
-
config: { identityUuid },
|
|
241
|
-
},
|
|
242
|
-
},
|
|
243
|
-
},
|
|
244
|
-
secrets: {
|
|
245
|
-
providers: {
|
|
246
|
-
ravi: { source: "exec", command: "ravi-secrets" },
|
|
247
|
-
},
|
|
248
|
-
},
|
|
249
|
-
};
|
|
250
|
-
}
|
|
251
|
-
return result;
|
|
252
|
-
},
|
|
253
|
-
},
|
|
254
|
-
],
|
|
255
|
-
});
|
|
256
152
|
const apiKey = resolveApiKey(config);
|
|
257
153
|
if (!apiKey) {
|
|
258
|
-
api.logger.warn("Not authenticated — only CLI commands available. Run 'openclaw
|
|
154
|
+
api.logger.warn("Not authenticated — only CLI commands available. Run 'openclaw ravi onboard' to enable tools and channels.");
|
|
259
155
|
return;
|
|
260
156
|
}
|
|
261
157
|
const client = new RaviClient({ apiUrl: RAVI_API_URL, apiKey });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA6BH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAKjD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEjG,gFAAgF;AAEhF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED