@provian/mcp 0.0.0-stage → 1.2.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/CHANGELOG.md +15 -0
- package/LICENSE +21 -0
- package/README.md +264 -2
- package/bin/provian-mcp.mjs +18 -0
- package/dist/agent-wallet-registration.d.ts +34 -0
- package/dist/agent-wallet-registration.d.ts.map +1 -0
- package/dist/agent-wallet-registration.js +440 -0
- package/dist/agent-wallet-registration.js.map +1 -0
- package/dist/core/challenge.d.ts +187 -0
- package/dist/core/challenge.d.ts.map +1 -0
- package/dist/core/challenge.js +536 -0
- package/dist/core/challenge.js.map +1 -0
- package/dist/core/crypto.d.ts +44 -0
- package/dist/core/crypto.d.ts.map +1 -0
- package/dist/core/crypto.js +124 -0
- package/dist/core/crypto.js.map +1 -0
- package/dist/core/disclosure-request.d.ts +169 -0
- package/dist/core/disclosure-request.d.ts.map +1 -0
- package/dist/core/disclosure-request.js +400 -0
- package/dist/core/disclosure-request.js.map +1 -0
- package/dist/core/genesis-offer.d.ts +25 -0
- package/dist/core/genesis-offer.d.ts.map +1 -0
- package/dist/core/genesis-offer.js +34 -0
- package/dist/core/genesis-offer.js.map +1 -0
- package/dist/core/harness-tool-vocabulary.d.ts +55 -0
- package/dist/core/harness-tool-vocabulary.d.ts.map +1 -0
- package/dist/core/harness-tool-vocabulary.js +116 -0
- package/dist/core/harness-tool-vocabulary.js.map +1 -0
- package/dist/core/keccak256.d.ts +15 -0
- package/dist/core/keccak256.d.ts.map +1 -0
- package/dist/core/keccak256.js +111 -0
- package/dist/core/keccak256.js.map +1 -0
- package/dist/core/key-custody.d.ts +33 -0
- package/dist/core/key-custody.d.ts.map +1 -0
- package/dist/core/key-custody.js +59 -0
- package/dist/core/key-custody.js.map +1 -0
- package/dist/core/meter-hash.d.ts +2 -0
- package/dist/core/meter-hash.d.ts.map +1 -0
- package/dist/core/meter-hash.js +8 -0
- package/dist/core/meter-hash.js.map +1 -0
- package/dist/core/meter-wire.d.ts +193 -0
- package/dist/core/meter-wire.d.ts.map +1 -0
- package/dist/core/meter-wire.js +418 -0
- package/dist/core/meter-wire.js.map +1 -0
- package/dist/core/output-signature.d.ts +162 -0
- package/dist/core/output-signature.d.ts.map +1 -0
- package/dist/core/output-signature.js +367 -0
- package/dist/core/output-signature.js.map +1 -0
- package/dist/core/presentation.d.ts +141 -0
- package/dist/core/presentation.d.ts.map +1 -0
- package/dist/core/presentation.js +160 -0
- package/dist/core/presentation.js.map +1 -0
- package/dist/core/recovery-seal.d.ts +36 -0
- package/dist/core/recovery-seal.d.ts.map +1 -0
- package/dist/core/recovery-seal.js +122 -0
- package/dist/core/recovery-seal.js.map +1 -0
- package/dist/core/server.d.ts +38 -0
- package/dist/core/server.d.ts.map +1 -0
- package/dist/core/server.js +106 -0
- package/dist/core/server.js.map +1 -0
- package/dist/core/thread-reader.d.ts +8 -0
- package/dist/core/thread-reader.d.ts.map +1 -0
- package/dist/core/thread-reader.js +47 -0
- package/dist/core/thread-reader.js.map +1 -0
- package/dist/core/tool-set.d.ts +28 -0
- package/dist/core/tool-set.d.ts.map +1 -0
- package/dist/core/tool-set.js +71 -0
- package/dist/core/tool-set.js.map +1 -0
- package/dist/core/tools.d.ts +151 -0
- package/dist/core/tools.d.ts.map +1 -0
- package/dist/core/tools.js +3621 -0
- package/dist/core/tools.js.map +1 -0
- package/dist/core/types.d.ts +189 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +17 -0
- package/dist/core/types.js.map +1 -0
- package/dist/credentials.d.ts +46 -0
- package/dist/credentials.d.ts.map +1 -0
- package/dist/credentials.js +213 -0
- package/dist/credentials.js.map +1 -0
- package/dist/device-credentials.d.ts +57 -0
- package/dist/device-credentials.d.ts.map +1 -0
- package/dist/device-credentials.js +403 -0
- package/dist/device-credentials.js.map +1 -0
- package/dist/eip191.d.ts +18 -0
- package/dist/eip191.d.ts.map +1 -0
- package/dist/eip191.js +41 -0
- package/dist/eip191.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +48 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime-env.d.ts +131 -0
- package/dist/runtime-env.d.ts.map +1 -0
- package/dist/runtime-env.js +328 -0
- package/dist/runtime-env.js.map +1 -0
- package/dist/stdio.d.ts +6 -0
- package/dist/stdio.d.ts.map +1 -0
- package/dist/stdio.js +136 -0
- package/dist/stdio.js.map +1 -0
- package/package.json +60 -4
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Device-credential resolution for the stdio MCP server.
|
|
4
|
+
*
|
|
5
|
+
* Reads/writes ~/.provian/credentials — the SDK's env-format device file
|
|
6
|
+
* (KEY=VALUE lines, 0600) — so the MCP server, the CLI, and the observer all
|
|
7
|
+
* share ONE registered device per machine instead of minting one each.
|
|
8
|
+
*
|
|
9
|
+
* Safety rule: file credentials are reused only when PROVIAN_OWNER_TYPE=agent.
|
|
10
|
+
* A human-owned device file (from `register-device` without --agent) is left
|
|
11
|
+
* alone — submitting agent PEs through a human device would silently attribute
|
|
12
|
+
* them to the human's wallet. Env vars (PROVIAN_DEVICE_KEY/SECRET) are treated
|
|
13
|
+
* as explicit operator intent and used as-is.
|
|
14
|
+
*/
|
|
15
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
18
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
19
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
20
|
+
}
|
|
21
|
+
Object.defineProperty(o, k2, desc);
|
|
22
|
+
}) : (function(o, m, k, k2) {
|
|
23
|
+
if (k2 === undefined) k2 = k;
|
|
24
|
+
o[k2] = m[k];
|
|
25
|
+
}));
|
|
26
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
27
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
28
|
+
}) : function(o, v) {
|
|
29
|
+
o["default"] = v;
|
|
30
|
+
});
|
|
31
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
32
|
+
var ownKeys = function(o) {
|
|
33
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
34
|
+
var ar = [];
|
|
35
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
36
|
+
return ar;
|
|
37
|
+
};
|
|
38
|
+
return ownKeys(o);
|
|
39
|
+
};
|
|
40
|
+
return function (mod) {
|
|
41
|
+
if (mod && mod.__esModule) return mod;
|
|
42
|
+
var result = {};
|
|
43
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
44
|
+
__setModuleDefault(result, mod);
|
|
45
|
+
return result;
|
|
46
|
+
};
|
|
47
|
+
})();
|
|
48
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
49
|
+
exports.MCP_PENDING_DEVICE_REGISTRATION_PATH = exports.DEVICE_CREDS_PATH = void 0;
|
|
50
|
+
exports.loadOrCreatePendingDeviceRegistration = loadOrCreatePendingDeviceRegistration;
|
|
51
|
+
exports.clearPendingDeviceRegistration = clearPendingDeviceRegistration;
|
|
52
|
+
exports.reconcileInstalledDeviceRegistration = reconcileInstalledDeviceRegistration;
|
|
53
|
+
exports.loadBoundDeviceCredentialsFile = loadBoundDeviceCredentialsFile;
|
|
54
|
+
exports.resolveLocalDeviceAuth = resolveLocalDeviceAuth;
|
|
55
|
+
exports.persistDeviceCredentialsFile = persistDeviceCredentialsFile;
|
|
56
|
+
const fs = __importStar(require("fs"));
|
|
57
|
+
const path = __importStar(require("path"));
|
|
58
|
+
const os_1 = require("os");
|
|
59
|
+
const crypto_1 = require("crypto");
|
|
60
|
+
exports.DEVICE_CREDS_PATH = path.join((0, os_1.homedir)(), '.provian', 'credentials');
|
|
61
|
+
exports.MCP_PENDING_DEVICE_REGISTRATION_PATH = path.join((0, os_1.homedir)(), '.provian', 'pending-mcp-device-registration.json');
|
|
62
|
+
const DEFAULT_RELAY_URL = 'https://api.provian.ai';
|
|
63
|
+
const PENDING_KEYS = [
|
|
64
|
+
'context_sha256',
|
|
65
|
+
'created_at_ms',
|
|
66
|
+
'device_key',
|
|
67
|
+
'device_secret',
|
|
68
|
+
'registration_id',
|
|
69
|
+
'schema_version',
|
|
70
|
+
];
|
|
71
|
+
const DEVICE_KEY = /^pdk_[a-f0-9]{32}$/;
|
|
72
|
+
const DEVICE_SECRET = /^pds_[a-f0-9]{64}$/;
|
|
73
|
+
const REGISTRATION_ID = /^[A-Za-z0-9][A-Za-z0-9_.:@-]{15,127}$/;
|
|
74
|
+
function hasPathEntry(filePath) {
|
|
75
|
+
try {
|
|
76
|
+
fs.lstatSync(filePath);
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
if (error.code === 'ENOENT')
|
|
81
|
+
return false;
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function readPrivateText(filePath, label) {
|
|
86
|
+
const noFollow = process.platform === 'win32' ? 0 : fs.constants.O_NOFOLLOW;
|
|
87
|
+
let fd;
|
|
88
|
+
try {
|
|
89
|
+
const pathStat = fs.lstatSync(filePath);
|
|
90
|
+
if (!pathStat.isFile() || pathStat.isSymbolicLink()) {
|
|
91
|
+
throw new Error(`${label} must be a private regular file`);
|
|
92
|
+
}
|
|
93
|
+
fd = fs.openSync(filePath, fs.constants.O_RDONLY | noFollow);
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
if (error instanceof Error && error.message.startsWith(label))
|
|
97
|
+
throw error;
|
|
98
|
+
throw new Error(`${label} is missing, unreadable, or unsafe`);
|
|
99
|
+
}
|
|
100
|
+
try {
|
|
101
|
+
const stat = fs.fstatSync(fd);
|
|
102
|
+
if (!stat.isFile()
|
|
103
|
+
|| (process.platform !== 'win32' && (stat.mode & 0o077) !== 0)) {
|
|
104
|
+
throw new Error(`${label} must be a private 0600 regular file`);
|
|
105
|
+
}
|
|
106
|
+
return fs.readFileSync(fd, 'utf8');
|
|
107
|
+
}
|
|
108
|
+
finally {
|
|
109
|
+
fs.closeSync(fd);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
function fsyncParentDirectory(filePath) {
|
|
113
|
+
const directoryFd = fs.openSync(path.dirname(filePath), 'r');
|
|
114
|
+
try {
|
|
115
|
+
fs.fsyncSync(directoryFd);
|
|
116
|
+
}
|
|
117
|
+
finally {
|
|
118
|
+
fs.closeSync(directoryFd);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
function pendingContextHash(context) {
|
|
122
|
+
return (0, crypto_1.createHash)('sha256').update(JSON.stringify({
|
|
123
|
+
owner_key: context.owner_key,
|
|
124
|
+
device_name: context.device_name,
|
|
125
|
+
platform: context.platform,
|
|
126
|
+
})).digest('hex');
|
|
127
|
+
}
|
|
128
|
+
function parsePendingRegistration(raw, expectedContextHash) {
|
|
129
|
+
let parsed;
|
|
130
|
+
try {
|
|
131
|
+
const value = JSON.parse(raw);
|
|
132
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
133
|
+
throw new Error('not an object');
|
|
134
|
+
parsed = value;
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
throw new Error('Pending MCP device registration is malformed; refusing to replace an ambiguous identity');
|
|
138
|
+
}
|
|
139
|
+
const keys = Object.keys(parsed).sort();
|
|
140
|
+
if (keys.length !== PENDING_KEYS.length
|
|
141
|
+
|| keys.some((key, index) => key !== PENDING_KEYS[index])
|
|
142
|
+
|| parsed.schema_version !== 'provian-mcp-device-registration/v1'
|
|
143
|
+
|| typeof parsed.context_sha256 !== 'string'
|
|
144
|
+
|| !/^[a-f0-9]{64}$/.test(parsed.context_sha256)
|
|
145
|
+
|| (expectedContextHash !== undefined && parsed.context_sha256 !== expectedContextHash)
|
|
146
|
+
|| typeof parsed.registration_id !== 'string'
|
|
147
|
+
|| !REGISTRATION_ID.test(parsed.registration_id)
|
|
148
|
+
|| typeof parsed.device_key !== 'string'
|
|
149
|
+
|| !DEVICE_KEY.test(parsed.device_key)
|
|
150
|
+
|| typeof parsed.device_secret !== 'string'
|
|
151
|
+
|| !DEVICE_SECRET.test(parsed.device_secret)
|
|
152
|
+
|| typeof parsed.created_at_ms !== 'number'
|
|
153
|
+
|| !Number.isSafeInteger(parsed.created_at_ms)
|
|
154
|
+
|| parsed.created_at_ms < 0) {
|
|
155
|
+
throw new Error('Pending MCP device registration does not match this agent/context; refusing to create a second ambiguous identity');
|
|
156
|
+
}
|
|
157
|
+
return parsed;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Persist a stable pending registration before the caller is allowed to send
|
|
161
|
+
* the first network request. Atomic rename means a crash yields either no
|
|
162
|
+
* request identity (and therefore no request) or the complete reusable one.
|
|
163
|
+
*/
|
|
164
|
+
function loadOrCreatePendingDeviceRegistration(context, pendingPath = exports.MCP_PENDING_DEVICE_REGISTRATION_PATH) {
|
|
165
|
+
const contextSha256 = pendingContextHash(context);
|
|
166
|
+
if (hasPathEntry(pendingPath)) {
|
|
167
|
+
const existing = parsePendingRegistration(readPrivateText(pendingPath, 'Pending MCP device registration'), contextSha256);
|
|
168
|
+
return {
|
|
169
|
+
registrationId: existing.registration_id,
|
|
170
|
+
deviceKey: existing.device_key,
|
|
171
|
+
deviceSecret: existing.device_secret,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
const pending = {
|
|
175
|
+
schema_version: 'provian-mcp-device-registration/v1',
|
|
176
|
+
context_sha256: contextSha256,
|
|
177
|
+
registration_id: `mcp-device-registration-${(0, crypto_1.randomUUID)()}`,
|
|
178
|
+
device_key: `pdk_${(0, crypto_1.randomBytes)(16).toString('hex')}`,
|
|
179
|
+
device_secret: `pds_${(0, crypto_1.randomBytes)(32).toString('hex')}`,
|
|
180
|
+
created_at_ms: Date.now(),
|
|
181
|
+
};
|
|
182
|
+
fs.mkdirSync(path.dirname(pendingPath), { recursive: true, mode: 0o700 });
|
|
183
|
+
const temporaryPath = `${pendingPath}.${process.pid}.${(0, crypto_1.randomBytes)(8).toString('hex')}.tmp`;
|
|
184
|
+
try {
|
|
185
|
+
const fd = fs.openSync(temporaryPath, 'wx', 0o600);
|
|
186
|
+
try {
|
|
187
|
+
fs.writeFileSync(fd, `${JSON.stringify(pending, null, 2)}\n`, 'utf8');
|
|
188
|
+
fs.fsyncSync(fd);
|
|
189
|
+
}
|
|
190
|
+
finally {
|
|
191
|
+
fs.closeSync(fd);
|
|
192
|
+
}
|
|
193
|
+
// link is create-if-absent (unlike rename, which would replace a winner).
|
|
194
|
+
// Concurrent first-use calls therefore converge on one complete identity.
|
|
195
|
+
try {
|
|
196
|
+
fs.linkSync(temporaryPath, pendingPath);
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
if (error.code !== 'EEXIST')
|
|
200
|
+
throw error;
|
|
201
|
+
const winner = parsePendingRegistration(readPrivateText(pendingPath, 'Pending MCP device registration'), contextSha256);
|
|
202
|
+
return {
|
|
203
|
+
registrationId: winner.registration_id,
|
|
204
|
+
deviceKey: winner.device_key,
|
|
205
|
+
deviceSecret: winner.device_secret,
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
const directoryFd = fs.openSync(path.dirname(pendingPath), 'r');
|
|
209
|
+
try {
|
|
210
|
+
fs.fsyncSync(directoryFd);
|
|
211
|
+
}
|
|
212
|
+
finally {
|
|
213
|
+
fs.closeSync(directoryFd);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
catch (error) {
|
|
217
|
+
try {
|
|
218
|
+
fs.unlinkSync(temporaryPath);
|
|
219
|
+
}
|
|
220
|
+
catch { /* no partial temp file */ }
|
|
221
|
+
throw error;
|
|
222
|
+
}
|
|
223
|
+
finally {
|
|
224
|
+
try {
|
|
225
|
+
fs.unlinkSync(temporaryPath);
|
|
226
|
+
}
|
|
227
|
+
catch { /* linked file already durable */ }
|
|
228
|
+
}
|
|
229
|
+
return {
|
|
230
|
+
registrationId: pending.registration_id,
|
|
231
|
+
deviceKey: pending.device_key,
|
|
232
|
+
deviceSecret: pending.device_secret,
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
/** Delete only the exact pending identity that just became durable. */
|
|
236
|
+
function clearPendingDeviceRegistration(registrationId, pendingPath = exports.MCP_PENDING_DEVICE_REGISTRATION_PATH, credsPath = exports.DEVICE_CREDS_PATH) {
|
|
237
|
+
if (!hasPathEntry(pendingPath))
|
|
238
|
+
return;
|
|
239
|
+
const parsed = parsePendingRegistration(readPrivateText(pendingPath, 'Pending MCP device registration'));
|
|
240
|
+
if (parsed.registration_id !== registrationId) {
|
|
241
|
+
throw new Error('Pending MCP device registration changed before acknowledgement');
|
|
242
|
+
}
|
|
243
|
+
const installed = loadBoundDeviceCredentialsFile(credsPath);
|
|
244
|
+
if (!installed
|
|
245
|
+
|| installed.registrationId !== parsed.registration_id
|
|
246
|
+
|| installed.deviceKey !== parsed.device_key
|
|
247
|
+
|| installed.deviceSecret !== parsed.device_secret) {
|
|
248
|
+
throw new Error('Installed device credentials do not match the pending registration');
|
|
249
|
+
}
|
|
250
|
+
fs.unlinkSync(pendingPath);
|
|
251
|
+
fsyncParentDirectory(pendingPath);
|
|
252
|
+
}
|
|
253
|
+
/** Finish the legal crash state where bound credentials crossed their fsync
|
|
254
|
+
* barrier but pending deletion did not. A legacy/unbound device file is left
|
|
255
|
+
* untouched because it cannot authenticate the pending identity. */
|
|
256
|
+
function reconcileInstalledDeviceRegistration(pendingPath = exports.MCP_PENDING_DEVICE_REGISTRATION_PATH, credsPath = exports.DEVICE_CREDS_PATH) {
|
|
257
|
+
if (!hasPathEntry(pendingPath))
|
|
258
|
+
return;
|
|
259
|
+
const installed = loadBoundDeviceCredentialsFile(credsPath);
|
|
260
|
+
if (!installed)
|
|
261
|
+
return;
|
|
262
|
+
clearPendingDeviceRegistration(installed.registrationId, pendingPath, credsPath);
|
|
263
|
+
}
|
|
264
|
+
function unquote(value) {
|
|
265
|
+
const trimmed = value.trim();
|
|
266
|
+
if ((trimmed.startsWith('"') && trimmed.endsWith('"')) ||
|
|
267
|
+
(trimmed.startsWith("'") && trimmed.endsWith("'"))) {
|
|
268
|
+
return trimmed.slice(1, -1);
|
|
269
|
+
}
|
|
270
|
+
return trimmed;
|
|
271
|
+
}
|
|
272
|
+
function parseEnvFormat(content) {
|
|
273
|
+
const values = {};
|
|
274
|
+
for (const rawLine of content.split(/\r?\n/)) {
|
|
275
|
+
const line = rawLine.trim();
|
|
276
|
+
if (!line || line.startsWith('#'))
|
|
277
|
+
continue;
|
|
278
|
+
const body = line.startsWith('export ') ? line.slice('export '.length).trim() : line;
|
|
279
|
+
const eq = body.indexOf('=');
|
|
280
|
+
if (eq === -1)
|
|
281
|
+
continue;
|
|
282
|
+
const key = body.slice(0, eq).trim();
|
|
283
|
+
if (Object.prototype.hasOwnProperty.call(values, key)) {
|
|
284
|
+
throw new Error(`Duplicate device credential field ${key}`);
|
|
285
|
+
}
|
|
286
|
+
values[key] = unquote(body.slice(eq + 1));
|
|
287
|
+
}
|
|
288
|
+
return values;
|
|
289
|
+
}
|
|
290
|
+
function loadDeviceCredentialValues(credsPath) {
|
|
291
|
+
if (!hasPathEntry(credsPath))
|
|
292
|
+
return null;
|
|
293
|
+
try {
|
|
294
|
+
return parseEnvFormat(readPrivateText(credsPath, 'Device credentials'));
|
|
295
|
+
}
|
|
296
|
+
catch {
|
|
297
|
+
return null;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
function loadBoundDeviceCredentialsFile(credsPath = exports.DEVICE_CREDS_PATH) {
|
|
301
|
+
const values = loadDeviceCredentialValues(credsPath);
|
|
302
|
+
if (!values
|
|
303
|
+
|| values.PROVIAN_OWNER_TYPE !== 'agent'
|
|
304
|
+
|| !DEVICE_KEY.test(values.PROVIAN_DEVICE_KEY || '')
|
|
305
|
+
|| !DEVICE_SECRET.test(values.PROVIAN_DEVICE_SECRET || '')
|
|
306
|
+
|| !/^dev_[a-f0-9]{64}$/.test(values.PROVIAN_DEVICE_ID || '')
|
|
307
|
+
|| !/^wallet_aw_[A-Za-z0-9_-]+$/.test(values.PROVIAN_AGENT_WALLET_ID || '')
|
|
308
|
+
|| !REGISTRATION_ID.test(values.PROVIAN_DEVICE_REGISTRATION_ID || ''))
|
|
309
|
+
return null;
|
|
310
|
+
return {
|
|
311
|
+
deviceKey: values.PROVIAN_DEVICE_KEY,
|
|
312
|
+
deviceSecret: values.PROVIAN_DEVICE_SECRET,
|
|
313
|
+
deviceId: values.PROVIAN_DEVICE_ID,
|
|
314
|
+
walletId: values.PROVIAN_AGENT_WALLET_ID,
|
|
315
|
+
registrationId: values.PROVIAN_DEVICE_REGISTRATION_ID,
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
/** Resolve device credentials: env first, then an agent-owned device file. */
|
|
319
|
+
function resolveLocalDeviceAuth(env = process.env, credsPath = exports.DEVICE_CREDS_PATH) {
|
|
320
|
+
const envKey = env.PROVIAN_DEVICE_KEY?.trim();
|
|
321
|
+
const envSecret = env.PROVIAN_DEVICE_SECRET?.trim();
|
|
322
|
+
if (envKey && envSecret)
|
|
323
|
+
return { deviceKey: envKey, deviceSecret: envSecret };
|
|
324
|
+
try {
|
|
325
|
+
const values = loadDeviceCredentialValues(credsPath);
|
|
326
|
+
if (!values || values.PROVIAN_OWNER_TYPE !== 'agent')
|
|
327
|
+
return null;
|
|
328
|
+
const key = values.PROVIAN_DEVICE_KEY;
|
|
329
|
+
const secret = values.PROVIAN_DEVICE_SECRET;
|
|
330
|
+
if (!DEVICE_KEY.test(key || '') || !DEVICE_SECRET.test(secret || ''))
|
|
331
|
+
return null;
|
|
332
|
+
return { deviceKey: key, deviceSecret: secret };
|
|
333
|
+
}
|
|
334
|
+
catch {
|
|
335
|
+
return null;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Persist device credentials in the SDK's exact file format. Never overwrites
|
|
340
|
+
* an existing file (an already-registered device identity wins). Returns the
|
|
341
|
+
* path written, or null when skipped/failed.
|
|
342
|
+
*/
|
|
343
|
+
function persistDeviceCredentialsFile(creds, credsPath = exports.DEVICE_CREDS_PATH) {
|
|
344
|
+
try {
|
|
345
|
+
if (!DEVICE_KEY.test(creds.device_key)
|
|
346
|
+
|| !DEVICE_SECRET.test(creds.device_secret)
|
|
347
|
+
|| typeof creds.device_id !== 'string'
|
|
348
|
+
|| !/^dev_[a-f0-9]{64}$/.test(creds.device_id)
|
|
349
|
+
|| typeof creds.wallet_id !== 'string'
|
|
350
|
+
|| !/^wallet_aw_[A-Za-z0-9_-]+$/.test(creds.wallet_id)
|
|
351
|
+
|| typeof creds.registration_id !== 'string'
|
|
352
|
+
|| !REGISTRATION_ID.test(creds.registration_id))
|
|
353
|
+
return null;
|
|
354
|
+
if (hasPathEntry(credsPath))
|
|
355
|
+
return null;
|
|
356
|
+
fs.mkdirSync(path.dirname(credsPath), { recursive: true, mode: 0o700 });
|
|
357
|
+
const lines = [
|
|
358
|
+
'# Provian device credentials',
|
|
359
|
+
`PROVIAN_DEVICE_KEY=${creds.device_key}`,
|
|
360
|
+
`PROVIAN_DEVICE_SECRET=${creds.device_secret}`,
|
|
361
|
+
`PROVIAN_RELAY_URL=${DEFAULT_RELAY_URL}`,
|
|
362
|
+
];
|
|
363
|
+
lines.push(`PROVIAN_DEVICE_ID=${creds.device_id}`);
|
|
364
|
+
if (creds.device_name)
|
|
365
|
+
lines.push(`PROVIAN_DEVICE_NAME=${JSON.stringify(creds.device_name)}`);
|
|
366
|
+
lines.push(`PROVIAN_DEVICE_REGISTRATION_ID=${creds.registration_id}`);
|
|
367
|
+
lines.push('PROVIAN_OWNER_TYPE=agent');
|
|
368
|
+
lines.push(`PROVIAN_AGENT_WALLET_ID=${creds.wallet_id}`);
|
|
369
|
+
const temporaryPath = `${credsPath}.${process.pid}.${(0, crypto_1.randomBytes)(8).toString('hex')}.tmp`;
|
|
370
|
+
try {
|
|
371
|
+
const fd = fs.openSync(temporaryPath, 'wx', 0o600);
|
|
372
|
+
try {
|
|
373
|
+
fs.writeFileSync(fd, `${lines.join('\n')}\n`, 'utf8');
|
|
374
|
+
fs.fsyncSync(fd);
|
|
375
|
+
}
|
|
376
|
+
finally {
|
|
377
|
+
fs.closeSync(fd);
|
|
378
|
+
}
|
|
379
|
+
fs.linkSync(temporaryPath, credsPath);
|
|
380
|
+
fsyncParentDirectory(credsPath);
|
|
381
|
+
}
|
|
382
|
+
finally {
|
|
383
|
+
try {
|
|
384
|
+
fs.unlinkSync(temporaryPath);
|
|
385
|
+
}
|
|
386
|
+
catch { /* linked */ }
|
|
387
|
+
}
|
|
388
|
+
const installed = loadBoundDeviceCredentialsFile(credsPath);
|
|
389
|
+
if (!installed
|
|
390
|
+
|| installed.deviceKey !== creds.device_key
|
|
391
|
+
|| installed.deviceSecret !== creds.device_secret
|
|
392
|
+
|| installed.deviceId !== creds.device_id
|
|
393
|
+
|| installed.walletId !== creds.wallet_id
|
|
394
|
+
|| installed.registrationId !== creds.registration_id) {
|
|
395
|
+
throw new Error('Installed device credentials failed exact verification');
|
|
396
|
+
}
|
|
397
|
+
return credsPath;
|
|
398
|
+
}
|
|
399
|
+
catch {
|
|
400
|
+
return null;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
//# sourceMappingURL=device-credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-credentials.js","sourceRoot":"","sources":["../src/device-credentials.ts"],"names":[],"mappings":"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"}
|
package/dist/eip191.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EIP-191 `personal_sign` for the LOCAL stdio server only.
|
|
3
|
+
*
|
|
4
|
+
* Byte-identical port of `provian-agent-sdk/src/link-signing.ts`
|
|
5
|
+
* (`signEip191Message`) over the same pinned @noble/curves 1.9.7 — the relay
|
|
6
|
+
* recovers the signer with `ethers.verifyMessage(message, signature)`.
|
|
7
|
+
*
|
|
8
|
+
* Deliberately OUTSIDE src/core/: the shared core (mirrored into the relay)
|
|
9
|
+
* must stay free of signing dependencies because the remote endpoint refuses
|
|
10
|
+
* private-key material by design. The stdio entrypoint injects this via
|
|
11
|
+
* ToolContext.signEip191.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Produce a 0x-prefixed 65-byte hex EIP-191 (`personal_sign`) signature
|
|
15
|
+
* (r || s || v, v = 27/28) over an arbitrary UTF-8 message.
|
|
16
|
+
*/
|
|
17
|
+
export declare function signEip191Message(privateKeyHex: string, message: string): string;
|
|
18
|
+
//# sourceMappingURL=eip191.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eip191.d.ts","sourceRoot":"","sources":["../src/eip191.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAaH;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAYhF"}
|
package/dist/eip191.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* EIP-191 `personal_sign` for the LOCAL stdio server only.
|
|
4
|
+
*
|
|
5
|
+
* Byte-identical port of `provian-agent-sdk/src/link-signing.ts`
|
|
6
|
+
* (`signEip191Message`) over the same pinned @noble/curves 1.9.7 — the relay
|
|
7
|
+
* recovers the signer with `ethers.verifyMessage(message, signature)`.
|
|
8
|
+
*
|
|
9
|
+
* Deliberately OUTSIDE src/core/: the shared core (mirrored into the relay)
|
|
10
|
+
* must stay free of signing dependencies because the remote endpoint refuses
|
|
11
|
+
* private-key material by design. The stdio entrypoint injects this via
|
|
12
|
+
* ToolContext.signEip191.
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.signEip191Message = signEip191Message;
|
|
16
|
+
const secp256k1_1 = require("@noble/curves/secp256k1");
|
|
17
|
+
const keccak256_1 = require("./core/keccak256");
|
|
18
|
+
/** EIP-191 personal_sign digest (equivalent to ethers.hashMessage). */
|
|
19
|
+
function eip191Digest(message) {
|
|
20
|
+
const bodyBytes = Buffer.from(message, 'utf-8');
|
|
21
|
+
const prefix = `\x19Ethereum Signed Message:\n${bodyBytes.length}`;
|
|
22
|
+
const prefixed = Buffer.concat([Buffer.from(prefix, 'utf-8'), bodyBytes]);
|
|
23
|
+
return (0, keccak256_1.keccak256)(prefixed);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Produce a 0x-prefixed 65-byte hex EIP-191 (`personal_sign`) signature
|
|
27
|
+
* (r || s || v, v = 27/28) over an arbitrary UTF-8 message.
|
|
28
|
+
*/
|
|
29
|
+
function signEip191Message(privateKeyHex, message) {
|
|
30
|
+
const cleanKey = privateKeyHex.startsWith('0x') ? privateKeyHex.slice(2) : privateKeyHex;
|
|
31
|
+
if (cleanKey.length !== 64) {
|
|
32
|
+
throw new Error('signEip191Message: privateKeyHex must be 32 bytes (64 hex chars)');
|
|
33
|
+
}
|
|
34
|
+
const digest = eip191Digest(message);
|
|
35
|
+
const sig = secp256k1_1.secp256k1.sign(digest, cleanKey);
|
|
36
|
+
const r = sig.r.toString(16).padStart(64, '0');
|
|
37
|
+
const s = sig.s.toString(16).padStart(64, '0');
|
|
38
|
+
const v = (27 + (sig.recovery ?? 0)).toString(16).padStart(2, '0');
|
|
39
|
+
return `0x${r}${s}${v}`;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=eip191.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eip191.js","sourceRoot":"","sources":["../src/eip191.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;AAiBH,8CAYC;AA3BD,uDAAoD;AACpD,gDAA6C;AAE7C,uEAAuE;AACvE,SAAS,YAAY,CAAC,OAAe;IACnC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,iCAAiC,SAAS,CAAC,MAAM,EAAE,CAAC;IACnE,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;IAC1E,OAAO,IAAA,qBAAS,EAAC,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,aAAqB,EAAE,OAAe;IACtE,MAAM,QAAQ,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;IACzF,IAAI,QAAQ,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACtF,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,GAAG,GAAG,qBAAS,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7C,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACnE,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;AAC1B,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @provian/mcp - MCP server for the Provian trust layer.
|
|
3
|
+
*
|
|
4
|
+
* Two ways to connect, one tool set:
|
|
5
|
+
* - Local stdio: `npx @provian/mcp` (this package)
|
|
6
|
+
* - Remote HTTP: https://api.provian.ai/mcp (zero install — the relay
|
|
7
|
+
* mounts the same shared tool core as a streamable-HTTP MCP endpoint)
|
|
8
|
+
*
|
|
9
|
+
* The shared core lives in src/core/ and is mirrored into the relay
|
|
10
|
+
* (provian-backend/src/mcp/core/) so both transports stay byte-identical.
|
|
11
|
+
*/
|
|
12
|
+
export { PROVIAN_TOOLS, PROVIAN_MCP_VERSION, PROVIAN_MCP_SERVER_NAME, callProvianTool, findTool } from './core/tools';
|
|
13
|
+
export { buildProvianMcpServer } from './core/server';
|
|
14
|
+
export type { ProvianToolDef, ToolContext, ToolAuth, DeviceAuth, PendingDeviceRegistration, ToolResult, } from './core/types';
|
|
15
|
+
export { generateAgentKeyPair, signPoPChallenge, deriveAddressFromPrivateKey } from './core/crypto';
|
|
16
|
+
export { loadOrCreatePendingAgentWalletRegistration, reloadPendingAgentWalletRegistration, completePendingAgentWalletRegistration, loadCompletedAgentWalletIdentity, } from './agent-wallet-registration';
|
|
17
|
+
export { signEip191Message } from './eip191';
|
|
18
|
+
export { resolveLocalAuth, persistAgentCredentials, AGENT_CREDS_PATH } from './credentials';
|
|
19
|
+
export { clearPendingDeviceRegistration, loadOrCreatePendingDeviceRegistration, resolveLocalDeviceAuth, persistDeviceCredentialsFile, DEVICE_CREDS_PATH, MCP_PENDING_DEVICE_REGISTRATION_PATH, } from './device-credentials';
|
|
20
|
+
export { startStdioServer, buildLocalContext } from './stdio';
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACtH,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,YAAY,EACV,cAAc,EACd,WAAW,EACX,QAAQ,EACR,UAAU,EACV,yBAAyB,EACzB,UAAU,GACX,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AACpG,OAAO,EACL,0CAA0C,EAC1C,oCAAoC,EACpC,sCAAsC,EACtC,gCAAgC,GACjC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC5F,OAAO,EACL,8BAA8B,EAC9B,qCAAqC,EACrC,sBAAsB,EACtB,4BAA4B,EAC5B,iBAAiB,EACjB,oCAAoC,GACrC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @provian/mcp - MCP server for the Provian trust layer.
|
|
4
|
+
*
|
|
5
|
+
* Two ways to connect, one tool set:
|
|
6
|
+
* - Local stdio: `npx @provian/mcp` (this package)
|
|
7
|
+
* - Remote HTTP: https://api.provian.ai/mcp (zero install — the relay
|
|
8
|
+
* mounts the same shared tool core as a streamable-HTTP MCP endpoint)
|
|
9
|
+
*
|
|
10
|
+
* The shared core lives in src/core/ and is mirrored into the relay
|
|
11
|
+
* (provian-backend/src/mcp/core/) so both transports stay byte-identical.
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.buildLocalContext = exports.startStdioServer = exports.MCP_PENDING_DEVICE_REGISTRATION_PATH = exports.DEVICE_CREDS_PATH = exports.persistDeviceCredentialsFile = exports.resolveLocalDeviceAuth = exports.loadOrCreatePendingDeviceRegistration = exports.clearPendingDeviceRegistration = exports.AGENT_CREDS_PATH = exports.persistAgentCredentials = exports.resolveLocalAuth = exports.signEip191Message = exports.loadCompletedAgentWalletIdentity = exports.completePendingAgentWalletRegistration = exports.reloadPendingAgentWalletRegistration = exports.loadOrCreatePendingAgentWalletRegistration = exports.deriveAddressFromPrivateKey = exports.signPoPChallenge = exports.generateAgentKeyPair = exports.buildProvianMcpServer = exports.findTool = exports.callProvianTool = exports.PROVIAN_MCP_SERVER_NAME = exports.PROVIAN_MCP_VERSION = exports.PROVIAN_TOOLS = void 0;
|
|
15
|
+
var tools_1 = require("./core/tools");
|
|
16
|
+
Object.defineProperty(exports, "PROVIAN_TOOLS", { enumerable: true, get: function () { return tools_1.PROVIAN_TOOLS; } });
|
|
17
|
+
Object.defineProperty(exports, "PROVIAN_MCP_VERSION", { enumerable: true, get: function () { return tools_1.PROVIAN_MCP_VERSION; } });
|
|
18
|
+
Object.defineProperty(exports, "PROVIAN_MCP_SERVER_NAME", { enumerable: true, get: function () { return tools_1.PROVIAN_MCP_SERVER_NAME; } });
|
|
19
|
+
Object.defineProperty(exports, "callProvianTool", { enumerable: true, get: function () { return tools_1.callProvianTool; } });
|
|
20
|
+
Object.defineProperty(exports, "findTool", { enumerable: true, get: function () { return tools_1.findTool; } });
|
|
21
|
+
var server_1 = require("./core/server");
|
|
22
|
+
Object.defineProperty(exports, "buildProvianMcpServer", { enumerable: true, get: function () { return server_1.buildProvianMcpServer; } });
|
|
23
|
+
var crypto_1 = require("./core/crypto");
|
|
24
|
+
Object.defineProperty(exports, "generateAgentKeyPair", { enumerable: true, get: function () { return crypto_1.generateAgentKeyPair; } });
|
|
25
|
+
Object.defineProperty(exports, "signPoPChallenge", { enumerable: true, get: function () { return crypto_1.signPoPChallenge; } });
|
|
26
|
+
Object.defineProperty(exports, "deriveAddressFromPrivateKey", { enumerable: true, get: function () { return crypto_1.deriveAddressFromPrivateKey; } });
|
|
27
|
+
var agent_wallet_registration_1 = require("./agent-wallet-registration");
|
|
28
|
+
Object.defineProperty(exports, "loadOrCreatePendingAgentWalletRegistration", { enumerable: true, get: function () { return agent_wallet_registration_1.loadOrCreatePendingAgentWalletRegistration; } });
|
|
29
|
+
Object.defineProperty(exports, "reloadPendingAgentWalletRegistration", { enumerable: true, get: function () { return agent_wallet_registration_1.reloadPendingAgentWalletRegistration; } });
|
|
30
|
+
Object.defineProperty(exports, "completePendingAgentWalletRegistration", { enumerable: true, get: function () { return agent_wallet_registration_1.completePendingAgentWalletRegistration; } });
|
|
31
|
+
Object.defineProperty(exports, "loadCompletedAgentWalletIdentity", { enumerable: true, get: function () { return agent_wallet_registration_1.loadCompletedAgentWalletIdentity; } });
|
|
32
|
+
var eip191_1 = require("./eip191");
|
|
33
|
+
Object.defineProperty(exports, "signEip191Message", { enumerable: true, get: function () { return eip191_1.signEip191Message; } });
|
|
34
|
+
var credentials_1 = require("./credentials");
|
|
35
|
+
Object.defineProperty(exports, "resolveLocalAuth", { enumerable: true, get: function () { return credentials_1.resolveLocalAuth; } });
|
|
36
|
+
Object.defineProperty(exports, "persistAgentCredentials", { enumerable: true, get: function () { return credentials_1.persistAgentCredentials; } });
|
|
37
|
+
Object.defineProperty(exports, "AGENT_CREDS_PATH", { enumerable: true, get: function () { return credentials_1.AGENT_CREDS_PATH; } });
|
|
38
|
+
var device_credentials_1 = require("./device-credentials");
|
|
39
|
+
Object.defineProperty(exports, "clearPendingDeviceRegistration", { enumerable: true, get: function () { return device_credentials_1.clearPendingDeviceRegistration; } });
|
|
40
|
+
Object.defineProperty(exports, "loadOrCreatePendingDeviceRegistration", { enumerable: true, get: function () { return device_credentials_1.loadOrCreatePendingDeviceRegistration; } });
|
|
41
|
+
Object.defineProperty(exports, "resolveLocalDeviceAuth", { enumerable: true, get: function () { return device_credentials_1.resolveLocalDeviceAuth; } });
|
|
42
|
+
Object.defineProperty(exports, "persistDeviceCredentialsFile", { enumerable: true, get: function () { return device_credentials_1.persistDeviceCredentialsFile; } });
|
|
43
|
+
Object.defineProperty(exports, "DEVICE_CREDS_PATH", { enumerable: true, get: function () { return device_credentials_1.DEVICE_CREDS_PATH; } });
|
|
44
|
+
Object.defineProperty(exports, "MCP_PENDING_DEVICE_REGISTRATION_PATH", { enumerable: true, get: function () { return device_credentials_1.MCP_PENDING_DEVICE_REGISTRATION_PATH; } });
|
|
45
|
+
var stdio_1 = require("./stdio");
|
|
46
|
+
Object.defineProperty(exports, "startStdioServer", { enumerable: true, get: function () { return stdio_1.startStdioServer; } });
|
|
47
|
+
Object.defineProperty(exports, "buildLocalContext", { enumerable: true, get: function () { return stdio_1.buildLocalContext; } });
|
|
48
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AAEH,sCAAsH;AAA7G,sGAAA,aAAa,OAAA;AAAE,4GAAA,mBAAmB,OAAA;AAAE,gHAAA,uBAAuB,OAAA;AAAE,wGAAA,eAAe,OAAA;AAAE,iGAAA,QAAQ,OAAA;AAC/F,wCAAsD;AAA7C,+GAAA,qBAAqB,OAAA;AAS9B,wCAAoG;AAA3F,8GAAA,oBAAoB,OAAA;AAAE,0GAAA,gBAAgB,OAAA;AAAE,qHAAA,2BAA2B,OAAA;AAC5E,yEAKqC;AAJnC,uJAAA,0CAA0C,OAAA;AAC1C,iJAAA,oCAAoC,OAAA;AACpC,mJAAA,sCAAsC,OAAA;AACtC,6IAAA,gCAAgC,OAAA;AAElC,mCAA6C;AAApC,2GAAA,iBAAiB,OAAA;AAC1B,6CAA4F;AAAnF,+GAAA,gBAAgB,OAAA;AAAE,sHAAA,uBAAuB,OAAA;AAAE,+GAAA,gBAAgB,OAAA;AACpE,2DAO8B;AAN5B,oIAAA,8BAA8B,OAAA;AAC9B,2IAAA,qCAAqC,OAAA;AACrC,4HAAA,sBAAsB,OAAA;AACtB,kIAAA,4BAA4B,OAAA;AAC5B,uHAAA,iBAAiB,OAAA;AACjB,0IAAA,oCAAoC,OAAA;AAEtC,iCAA8D;AAArD,yGAAA,gBAAgB,OAAA;AAAE,0GAAA,iBAAiB,OAAA"}
|