@vess-id/ai-identity 0.0.0-dev-20260902121045
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/README.md +265 -0
- package/dist/agent/agent-did-manager.d.ts +97 -0
- package/dist/agent/agent-did-manager.d.ts.map +1 -0
- package/dist/auth/auth-provider.d.ts +51 -0
- package/dist/auth/auth-provider.d.ts.map +1 -0
- package/dist/auth/index.d.ts +2 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/client.d.ts +63 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/config/index.d.ts +84 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/constraint/constraint-evaluator.d.ts +103 -0
- package/dist/constraint/constraint-evaluator.d.ts.map +1 -0
- package/dist/constraint/index.d.ts +5 -0
- package/dist/constraint/index.d.ts.map +1 -0
- package/dist/did/agent.d.ts +58 -0
- package/dist/did/agent.d.ts.map +1 -0
- package/dist/did/did-utils.d.ts +82 -0
- package/dist/did/did-utils.d.ts.map +1 -0
- package/dist/did/key-manager.d.ts +19 -0
- package/dist/did/key-manager.d.ts.map +1 -0
- package/dist/gateway/gateway-client.d.ts +103 -0
- package/dist/gateway/gateway-client.d.ts.map +1 -0
- package/dist/gateway/index.d.ts +2 -0
- package/dist/gateway/index.d.ts.map +1 -0
- package/dist/grant/grant-manager.d.ts +140 -0
- package/dist/grant/grant-manager.d.ts.map +1 -0
- package/dist/grant/index.d.ts +2 -0
- package/dist/grant/index.d.ts.map +1 -0
- package/dist/identity/device-enroll-manager.d.ts +117 -0
- package/dist/identity/device-enroll-manager.d.ts.map +1 -0
- package/dist/identity/user-identity-manager.d.ts +123 -0
- package/dist/identity/user-identity-manager.d.ts.map +1 -0
- package/dist/identity/user-key-pair-manager.d.ts +22 -0
- package/dist/identity/user-key-pair-manager.d.ts.map +1 -0
- package/dist/index.d.mts +42685 -0
- package/dist/index.d.ts +57 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19534 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +19347 -0
- package/dist/index.mjs.map +1 -0
- package/dist/internal-signature/canonical.d.ts +80 -0
- package/dist/internal-signature/canonical.d.ts.map +1 -0
- package/dist/internal-signature/index.d.ts +17 -0
- package/dist/internal-signature/index.d.ts.map +1 -0
- package/dist/internal-signature/signer.d.ts +76 -0
- package/dist/internal-signature/signer.d.ts.map +1 -0
- package/dist/policy/cedar-engine.d.ts +334 -0
- package/dist/policy/cedar-engine.d.ts.map +1 -0
- package/dist/policy/cedar-entities.d.ts +59 -0
- package/dist/policy/cedar-entities.d.ts.map +1 -0
- package/dist/policy/decision.d.ts +46 -0
- package/dist/policy/decision.d.ts.map +1 -0
- package/dist/policy/index.d.ts +15 -0
- package/dist/policy/index.d.ts.map +1 -0
- package/dist/registry/access-orchestrator.d.ts +184 -0
- package/dist/registry/access-orchestrator.d.ts.map +1 -0
- package/dist/registry/action-aliases.d.ts +37 -0
- package/dist/registry/action-aliases.d.ts.map +1 -0
- package/dist/registry/action-input-validator.d.ts +19 -0
- package/dist/registry/action-input-validator.d.ts.map +1 -0
- package/dist/registry/action-normalizer.d.ts +47 -0
- package/dist/registry/action-normalizer.d.ts.map +1 -0
- package/dist/registry/action-registry-json.d.ts +35897 -0
- package/dist/registry/action-registry-json.d.ts.map +1 -0
- package/dist/registry/action-registry.d.ts +101 -0
- package/dist/registry/action-registry.d.ts.map +1 -0
- package/dist/registry/action-risk.d.ts +109 -0
- package/dist/registry/action-risk.d.ts.map +1 -0
- package/dist/registry/action-summary.d.ts +16 -0
- package/dist/registry/action-summary.d.ts.map +1 -0
- package/dist/registry/index.d.ts +14 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/providers.d.ts +32 -0
- package/dist/registry/providers.d.ts.map +1 -0
- package/dist/registry/reauth-constants.d.ts +56 -0
- package/dist/registry/reauth-constants.d.ts.map +1 -0
- package/dist/registry/resource-type-labels.d.ts +15 -0
- package/dist/registry/resource-type-labels.d.ts.map +1 -0
- package/dist/registry/resource-types.d.ts +47 -0
- package/dist/registry/resource-types.d.ts.map +1 -0
- package/dist/resolver/approval-time-resolution.d.ts +72 -0
- package/dist/resolver/approval-time-resolution.d.ts.map +1 -0
- package/dist/resolver/canonical-resource-id.d.ts +37 -0
- package/dist/resolver/canonical-resource-id.d.ts.map +1 -0
- package/dist/resolver/compare-resource-id.d.ts +37 -0
- package/dist/resolver/compare-resource-id.d.ts.map +1 -0
- package/dist/resolver/salient-digest.d.ts +48 -0
- package/dist/resolver/salient-digest.d.ts.map +1 -0
- package/dist/resolver/target-resolver.d.ts +28 -0
- package/dist/resolver/target-resolver.d.ts.map +1 -0
- package/dist/state/index.d.ts +3 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/json-state-store.d.ts +24 -0
- package/dist/state/json-state-store.d.ts.map +1 -0
- package/dist/state/state-store.interface.d.ts +37 -0
- package/dist/state/state-store.interface.d.ts.map +1 -0
- package/dist/storage/filesystem-key-storage.d.ts +16 -0
- package/dist/storage/filesystem-key-storage.d.ts.map +1 -0
- package/dist/storage/index.d.ts +4 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/key-storage.interface.d.ts +42 -0
- package/dist/storage/key-storage.interface.d.ts.map +1 -0
- package/dist/storage/memory-key-storage.d.ts +17 -0
- package/dist/storage/memory-key-storage.d.ts.map +1 -0
- package/dist/tool/tool-manager.d.ts +44 -0
- package/dist/tool/tool-manager.d.ts.map +1 -0
- package/dist/types/agent.d.ts +139 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/audit.d.ts +23 -0
- package/dist/types/audit.d.ts.map +1 -0
- package/dist/types/cedar-policy.d.ts +60 -0
- package/dist/types/cedar-policy.d.ts.map +1 -0
- package/dist/types/connector-plugin.d.ts +252 -0
- package/dist/types/connector-plugin.d.ts.map +1 -0
- package/dist/types/connectors.d.ts +39 -0
- package/dist/types/connectors.d.ts.map +1 -0
- package/dist/types/context.d.ts +152 -0
- package/dist/types/context.d.ts.map +1 -0
- package/dist/types/did.d.ts +18 -0
- package/dist/types/did.d.ts.map +1 -0
- package/dist/types/errors.d.ts +24 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/grant.d.ts +522 -0
- package/dist/types/grant.d.ts.map +1 -0
- package/dist/types/index.d.ts +22 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/intent.d.ts +133 -0
- package/dist/types/intent.d.ts.map +1 -0
- package/dist/types/invitation.d.ts +97 -0
- package/dist/types/invitation.d.ts.map +1 -0
- package/dist/types/jira.d.ts +348 -0
- package/dist/types/jira.d.ts.map +1 -0
- package/dist/types/oauth.d.ts +72 -0
- package/dist/types/oauth.d.ts.map +1 -0
- package/dist/types/organization.d.ts +77 -0
- package/dist/types/organization.d.ts.map +1 -0
- package/dist/types/permission-mode.d.ts +138 -0
- package/dist/types/permission-mode.d.ts.map +1 -0
- package/dist/types/permission-vc.d.ts +800 -0
- package/dist/types/permission-vc.d.ts.map +1 -0
- package/dist/types/receipt.d.ts +133 -0
- package/dist/types/receipt.d.ts.map +1 -0
- package/dist/types/target-binding.d.ts +163 -0
- package/dist/types/target-binding.d.ts.map +1 -0
- package/dist/types/tier.d.ts +13 -0
- package/dist/types/tier.d.ts.map +1 -0
- package/dist/types/vc.d.ts +213 -0
- package/dist/types/vc.d.ts.map +1 -0
- package/dist/types/vp.d.ts +25 -0
- package/dist/types/vp.d.ts.map +1 -0
- package/dist/utils/action-classifier.d.ts +13 -0
- package/dist/utils/action-classifier.d.ts.map +1 -0
- package/dist/utils/crypto.d.ts +22 -0
- package/dist/utils/crypto.d.ts.map +1 -0
- package/dist/utils/freemail-domains.d.ts +13 -0
- package/dist/utils/freemail-domains.d.ts.map +1 -0
- package/dist/utils/sdjwt-client.d.ts +415 -0
- package/dist/utils/sdjwt-client.d.ts.map +1 -0
- package/dist/utils/sdjwt-disclosure.d.ts +13 -0
- package/dist/utils/sdjwt-disclosure.d.ts.map +1 -0
- package/dist/utils/tier-utils.d.ts +15 -0
- package/dist/utils/tier-utils.d.ts.map +1 -0
- package/dist/vc/api-vc-manager.d.ts +43 -0
- package/dist/vc/api-vc-manager.d.ts.map +1 -0
- package/dist/vc/vc-manager.d.ts +55 -0
- package/dist/vc/vc-manager.d.ts.map +1 -0
- package/dist/vp/kb-jwt-builder.d.ts +89 -0
- package/dist/vp/kb-jwt-builder.d.ts.map +1 -0
- package/dist/vp/vp-manager.d.ts +75 -0
- package/dist/vp/vp-manager.d.ts.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Device Enrollment Manager
|
|
3
|
+
*
|
|
4
|
+
* Handles the device code flow for registering a User Root DID
|
|
5
|
+
* without requiring an API key. Supports two modes:
|
|
6
|
+
*
|
|
7
|
+
* Client-generated (local mode):
|
|
8
|
+
* 1. Client calls startDeviceEnrollment() with rootDid + publicKeyJwk
|
|
9
|
+
* 2. Client presents user_code and verification_url to the user
|
|
10
|
+
* 3. User approves in browser
|
|
11
|
+
* 4. Client polls until approved, receives device_session_token
|
|
12
|
+
*
|
|
13
|
+
* Server-generated (remote mode):
|
|
14
|
+
* 1. Client calls startServerSideEnrollment() with clientInfo only
|
|
15
|
+
* 2. Server returns user_code + verification_url (DID generated on approval)
|
|
16
|
+
* 3. User approves in browser
|
|
17
|
+
* 4. Client polls until approved, receives rootDid + device_session_token
|
|
18
|
+
*/
|
|
19
|
+
export interface DeviceEnrollStartParams {
|
|
20
|
+
rootDid: string;
|
|
21
|
+
publicKeyJwk: {
|
|
22
|
+
kty: string;
|
|
23
|
+
crv: string;
|
|
24
|
+
x: string;
|
|
25
|
+
y?: string;
|
|
26
|
+
use?: string;
|
|
27
|
+
alg?: string;
|
|
28
|
+
};
|
|
29
|
+
clientInfo?: {
|
|
30
|
+
deviceName?: string;
|
|
31
|
+
os?: string;
|
|
32
|
+
appVersion?: string;
|
|
33
|
+
hostname?: string;
|
|
34
|
+
[key: string]: any;
|
|
35
|
+
};
|
|
36
|
+
purpose?: string;
|
|
37
|
+
}
|
|
38
|
+
export interface DeviceEnrollServerSideParams {
|
|
39
|
+
clientInfo?: {
|
|
40
|
+
deviceName?: string;
|
|
41
|
+
os?: string;
|
|
42
|
+
appVersion?: string;
|
|
43
|
+
hostname?: string;
|
|
44
|
+
[key: string]: any;
|
|
45
|
+
};
|
|
46
|
+
purpose?: string;
|
|
47
|
+
}
|
|
48
|
+
export interface DeviceEnrollStartResult {
|
|
49
|
+
requestId: string;
|
|
50
|
+
userCode: string;
|
|
51
|
+
verificationUrl: string;
|
|
52
|
+
expiresAt: string;
|
|
53
|
+
}
|
|
54
|
+
export interface DeviceEnrollPollResult {
|
|
55
|
+
status: 'pending' | 'approved' | 'expired' | 'denied';
|
|
56
|
+
deviceSessionToken?: string;
|
|
57
|
+
expiresAt?: string;
|
|
58
|
+
rootDid?: string;
|
|
59
|
+
}
|
|
60
|
+
export declare class DeviceEnrollManager {
|
|
61
|
+
private baseUrl;
|
|
62
|
+
constructor(baseUrl: string);
|
|
63
|
+
/**
|
|
64
|
+
* Build common headers for all API requests.
|
|
65
|
+
* Includes User-Agent and ngrok-skip-browser-warning to avoid
|
|
66
|
+
* ngrok free-tier interstitial pages blocking programmatic access.
|
|
67
|
+
*/
|
|
68
|
+
private buildHeaders;
|
|
69
|
+
/**
|
|
70
|
+
* Start the device enrollment flow.
|
|
71
|
+
* Sends the root DID public key to the Gateway and gets a user code.
|
|
72
|
+
*
|
|
73
|
+
* @param params - Root DID public info and client metadata
|
|
74
|
+
* @returns Request ID, user code, and verification URL
|
|
75
|
+
*/
|
|
76
|
+
startDeviceEnrollment(params: DeviceEnrollStartParams): Promise<DeviceEnrollStartResult>;
|
|
77
|
+
/**
|
|
78
|
+
* Start the device enrollment flow with server-side DID generation.
|
|
79
|
+
* The server generates the real key pair on approval (not at start time).
|
|
80
|
+
* Use this for remote/cloud-managed mode.
|
|
81
|
+
*
|
|
82
|
+
* @param params - Client metadata (no DID or key needed)
|
|
83
|
+
* @returns Request ID, user code, and verification URL
|
|
84
|
+
*/
|
|
85
|
+
startServerSideEnrollment(params: DeviceEnrollServerSideParams): Promise<DeviceEnrollStartResult>;
|
|
86
|
+
/**
|
|
87
|
+
* Poll for enrollment status.
|
|
88
|
+
* Call this periodically after startDeviceEnrollment() to check if
|
|
89
|
+
* the user has approved the enrollment in the web UI.
|
|
90
|
+
*
|
|
91
|
+
* @param requestId - The request ID from startDeviceEnrollment()
|
|
92
|
+
* @returns Current status and token if approved
|
|
93
|
+
*/
|
|
94
|
+
pollDeviceEnrollment(requestId: string): Promise<DeviceEnrollPollResult>;
|
|
95
|
+
/**
|
|
96
|
+
* Convenience method: Start enrollment and poll until completion.
|
|
97
|
+
* Returns the final result (approved, expired, or denied).
|
|
98
|
+
*
|
|
99
|
+
* @param params - Enrollment parameters (client-generated mode)
|
|
100
|
+
* @param onUserCode - Callback when user code is available (present to user)
|
|
101
|
+
* @param pollIntervalMs - Polling interval in ms (default: 3000)
|
|
102
|
+
* @param maxPolls - Maximum number of poll attempts (default: 120)
|
|
103
|
+
*/
|
|
104
|
+
enrollAndWait(params: DeviceEnrollStartParams, onUserCode: (info: DeviceEnrollStartResult) => void, pollIntervalMs?: number, maxPolls?: number): Promise<DeviceEnrollPollResult>;
|
|
105
|
+
/**
|
|
106
|
+
* Convenience method: Start server-side enrollment and poll until completion.
|
|
107
|
+
* Returns the final result including the server-generated rootDid on approval.
|
|
108
|
+
*
|
|
109
|
+
* @param params - Client metadata (server-generated mode)
|
|
110
|
+
* @param onUserCode - Callback when user code is available (present to user)
|
|
111
|
+
* @param pollIntervalMs - Polling interval in ms (default: 3000)
|
|
112
|
+
* @param maxPolls - Maximum number of poll attempts (default: 120)
|
|
113
|
+
*/
|
|
114
|
+
enrollServerSideAndWait(params: DeviceEnrollServerSideParams, onUserCode: (info: DeviceEnrollStartResult) => void, pollIntervalMs?: number, maxPolls?: number): Promise<DeviceEnrollPollResult>;
|
|
115
|
+
private pollUntilComplete;
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=device-enroll-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-enroll-manager.d.ts","sourceRoot":"","sources":["../../src/identity/device-enroll-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE;QACZ,GAAG,EAAE,MAAM,CAAA;QACX,GAAG,EAAE,MAAM,CAAA;QACX,CAAC,EAAE,MAAM,CAAA;QACT,CAAC,CAAC,EAAE,MAAM,CAAA;QACV,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,GAAG,CAAC,EAAE,MAAM,CAAA;KACb,CAAA;IACD,UAAU,CAAC,EAAE;QACX,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,EAAE,CAAC,EAAE,MAAM,CAAA;QACX,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KACnB,CAAA;IACD,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,4BAA4B;IAC3C,UAAU,CAAC,EAAE;QACX,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,EAAE,CAAC,EAAE,MAAM,CAAA;QACX,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KACnB,CAAA;IACD,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,MAAM,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAA;IACrD,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAAQ;gBAEX,OAAO,EAAE,MAAM;IAI3B;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAQpB;;;;;;OAMG;IACG,qBAAqB,CACzB,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,uBAAuB,CAAC;IA2BnC;;;;;;;OAOG;IACG,yBAAyB,CAC7B,MAAM,EAAE,4BAA4B,GACnC,OAAO,CAAC,uBAAuB,CAAC;IA0BnC;;;;;;;OAOG;IACG,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAsB9E;;;;;;;;OAQG;IACG,aAAa,CACjB,MAAM,EAAE,uBAAuB,EAC/B,UAAU,EAAE,CAAC,IAAI,EAAE,uBAAuB,KAAK,IAAI,EACnD,cAAc,GAAE,MAAa,EAC7B,QAAQ,GAAE,MAAY,GACrB,OAAO,CAAC,sBAAsB,CAAC;IAKlC;;;;;;;;OAQG;IACG,uBAAuB,CAC3B,MAAM,EAAE,4BAA4B,EACpC,UAAU,EAAE,CAAC,IAAI,EAAE,uBAAuB,KAAK,IAAI,EACnD,cAAc,GAAE,MAAa,EAC7B,QAAQ,GAAE,MAAY,GACrB,OAAO,CAAC,sBAAsB,CAAC;YAKpB,iBAAiB;CAoBhC"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { KeyManager } from '../did/key-manager';
|
|
2
|
+
import { DIDDocument } from '../types';
|
|
3
|
+
export interface UserIdentityManagerOptions {
|
|
4
|
+
/**
|
|
5
|
+
* Directory holding `user-did.txt`, the single file naming the DID this
|
|
6
|
+
* installation issues VCs as.
|
|
7
|
+
*
|
|
8
|
+
* 🔴 Omit this and the default stays exactly what it has always been —
|
|
9
|
+
* `~/.vess-aidentity/`. Note this is the config root itself, NOT a
|
|
10
|
+
* subdirectory: unlike `AgentDIDManager`, which owns the whole
|
|
11
|
+
* `agent-dids/` subtree, this manager owns one fixed filename inside a
|
|
12
|
+
* directory it shares with `keys/`, `agent-dids/` and `vc-cache.json`.
|
|
13
|
+
* Changing the default would orphan the existing user identity, and every
|
|
14
|
+
* VC already issued names that DID as its issuer.
|
|
15
|
+
*
|
|
16
|
+
* Supply it for either of two reasons:
|
|
17
|
+
*
|
|
18
|
+
* - **Tenant isolation.** With the path hard-coded to `os.homedir()`, one
|
|
19
|
+
* process serving several tenants has a single user DID for all of them.
|
|
20
|
+
* Worse than the agent case: agent IDs at least namespace the files, while
|
|
21
|
+
* the user DID is one fixed filename, so the last tenant to call
|
|
22
|
+
* `createUserDID` silently overwrites everyone else's issuer identity.
|
|
23
|
+
*
|
|
24
|
+
* - **Test isolation.** Tests could not otherwise steer this path away from
|
|
25
|
+
* the developer's real home. Under jest, `process.env.HOME = x` does not
|
|
26
|
+
* help: jest-environment-node replaces `process.env` with a plain object
|
|
27
|
+
* behind a Proxy, so the assignment never reaches `setenv(3)`, while
|
|
28
|
+
* `os.homedir()` goes through libuv to `getenv("HOME")` and reads the real
|
|
29
|
+
* environ. Both reads and writes therefore escape to the real home and the
|
|
30
|
+
* suite stays green while clobbering the developer's own user DID.
|
|
31
|
+
*/
|
|
32
|
+
mappingDir?: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* User Identity Manager
|
|
36
|
+
* Manages DID generation and lifecycle for Users (Issuers) specifically
|
|
37
|
+
* Separate from Agent management to avoid confusion
|
|
38
|
+
*/
|
|
39
|
+
export declare class UserIdentityManager {
|
|
40
|
+
private keyManager;
|
|
41
|
+
private currentUserDID;
|
|
42
|
+
private readonly mappingDirOverride?;
|
|
43
|
+
constructor(keyManager?: KeyManager, options?: UserIdentityManagerOptions);
|
|
44
|
+
/**
|
|
45
|
+
* 🔴 The one place the user-DID directory is derived.
|
|
46
|
+
*
|
|
47
|
+
* It used to be derived independently in `saveUserDID` / `loadUserDID` /
|
|
48
|
+
* `clearUserDID`. That is the same shape `AgentDIDManager` was in before
|
|
49
|
+
* PR #1442, where the copies had actually drifted — load and delete looked
|
|
50
|
+
* at `~/.vess/` while save wrote to `~/.vess-aidentity/`. Nothing caught it
|
|
51
|
+
* in-process because the in-memory field answered first; across processes
|
|
52
|
+
* the load always missed. Here `currentUserDID` plays that same masking
|
|
53
|
+
* role, so a drift would likewise only show up after a restart.
|
|
54
|
+
*
|
|
55
|
+
* The default is the config root `~/.vess-aidentity/` and must stay that
|
|
56
|
+
* way — see the note on `UserIdentityManagerOptions.mappingDir`.
|
|
57
|
+
*/
|
|
58
|
+
private userDidDir;
|
|
59
|
+
/**
|
|
60
|
+
* Absolute path of the file holding the user DID.
|
|
61
|
+
*
|
|
62
|
+
* Derived from `userDidDir()` so the filename cannot drift either — the
|
|
63
|
+
* three call sites used to spell `'user-did.txt'` out separately as well.
|
|
64
|
+
*/
|
|
65
|
+
private userDidFile;
|
|
66
|
+
/**
|
|
67
|
+
* Get or create current user DID
|
|
68
|
+
* This represents the user who will be the issuer of VCs
|
|
69
|
+
*/
|
|
70
|
+
getCurrentUserDID(): Promise<string>;
|
|
71
|
+
/**
|
|
72
|
+
* Create a new user DID (for issuing VCs)
|
|
73
|
+
*/
|
|
74
|
+
createUserDID(): Promise<string>;
|
|
75
|
+
/**
|
|
76
|
+
* Get user's key pair
|
|
77
|
+
*/
|
|
78
|
+
getUserKeyPair(): Promise<any>;
|
|
79
|
+
/**
|
|
80
|
+
* Resolve user DID to DID Document
|
|
81
|
+
*/
|
|
82
|
+
resolveUserDID(did?: string): Promise<DIDDocument>;
|
|
83
|
+
/**
|
|
84
|
+
* Export user identity for backup
|
|
85
|
+
*/
|
|
86
|
+
exportUserIdentity(): Promise<{
|
|
87
|
+
did: string;
|
|
88
|
+
privateKey: any;
|
|
89
|
+
didDocument: DIDDocument;
|
|
90
|
+
}>;
|
|
91
|
+
/**
|
|
92
|
+
* Import user identity from backup
|
|
93
|
+
*/
|
|
94
|
+
importUserIdentity(backup: {
|
|
95
|
+
did: string;
|
|
96
|
+
privateKey: any;
|
|
97
|
+
}): Promise<void>;
|
|
98
|
+
/**
|
|
99
|
+
* Reset user identity (create new DID)
|
|
100
|
+
*/
|
|
101
|
+
resetUserIdentity(): Promise<string>;
|
|
102
|
+
/**
|
|
103
|
+
* Resolve did:jwk locally
|
|
104
|
+
*/
|
|
105
|
+
private resolveDidJwkLocally;
|
|
106
|
+
/**
|
|
107
|
+
* Create DID Document
|
|
108
|
+
*/
|
|
109
|
+
private createDidDocument;
|
|
110
|
+
/**
|
|
111
|
+
* Save current user DID to persistent storage
|
|
112
|
+
*/
|
|
113
|
+
private saveUserDID;
|
|
114
|
+
/**
|
|
115
|
+
* Load current user DID from persistent storage
|
|
116
|
+
*/
|
|
117
|
+
private loadUserDID;
|
|
118
|
+
/**
|
|
119
|
+
* Clear saved user DID
|
|
120
|
+
*/
|
|
121
|
+
private clearUserDID;
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=user-identity-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-identity-manager.d.ts","sourceRoot":"","sources":["../../src/identity/user-identity-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAG/C,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAEtC,MAAM,WAAW,0BAA0B;IACzC;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;;;GAIG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAQ;gBAEhC,UAAU,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,0BAA0B;IAKzE;;;;;;;;;;;;;OAaG;YACW,UAAU;IASxB;;;;;OAKG;YACW,WAAW;IAMzB;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAgB1C;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAiBtC;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC;IAcpC;;OAEG;IACG,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAUxD;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,GAAG,CAAC;QAAC,WAAW,EAAE,WAAW,CAAA;KAAE,CAAC;IAY/F;;OAEG;IACG,kBAAkB,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,GAAG,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IASjF;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAW1C;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAK5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAqBzB;;OAEG;YACW,WAAW;IAUzB;;OAEG;YACW,WAAW;IAazB;;OAEG;YACW,YAAY;CAY3B"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { JWK } from 'jose';
|
|
2
|
+
export interface KeyPairGenerationResult {
|
|
3
|
+
did: string;
|
|
4
|
+
publicKey: JWK;
|
|
5
|
+
privateKey: JWK;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Manages key pair generation for remote user issuer.
|
|
9
|
+
* Generates ES256 key pairs and creates did:jwk DIDs.
|
|
10
|
+
*/
|
|
11
|
+
export declare class UserKeyPairManager {
|
|
12
|
+
/**
|
|
13
|
+
* Generate a new key pair and create a did:jwk DID
|
|
14
|
+
*/
|
|
15
|
+
generateKeyPair(): Promise<KeyPairGenerationResult>;
|
|
16
|
+
/**
|
|
17
|
+
* Extract public key info from a did:jwk DID
|
|
18
|
+
* @throws Error if the DID is not in did:jwk format
|
|
19
|
+
*/
|
|
20
|
+
extractPublicKeyInfo(did: string): JWK;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=user-key-pair-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-key-pair-manager.d.ts","sourceRoot":"","sources":["../../src/identity/user-key-pair-manager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAE/B,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,GAAG,CAAA;IACd,UAAU,EAAE,GAAG,CAAA;CAChB;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAWzD;;;OAGG;IACH,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG;CAMvC"}
|