@ecmaos/types 0.4.1 → 0.4.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.
@@ -1,5 +1,5 @@
1
1
 
2
2
 
3
- > @ecmaos/types@0.4.1 build /home/archmag0s/code/ecmaos/core/types
3
+ > @ecmaos/types@0.4.3 build /home/archmag0s/code/ecmaos/core/types
4
4
  > tsc
5
5
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,176 @@
1
1
  # @ecmaos/types
2
2
 
3
+ ## 0.4.3
4
+
5
+ ### Patch Changes
6
+
7
+ - 97b4dbf: implement passkey management and login
8
+
9
+ ## 0.4.2
10
+
11
+ ### Patch Changes
12
+
13
+ - ae8f619: OVERVIEW
14
+
15
+ Total Commits: 5
16
+ Files Changed: 56 files
17
+ Additions: +1,632 lines
18
+ Deletions: -539 lines
19
+ Net Change: +1,093 lines
20
+
21
+ ***
22
+
23
+ COMMIT DETAILS
24
+
25
+ 1. c6f2d9c - docs: Update NEWS and README files; add tilde expansion feature in shell commands
26
+
27
+ Type: Documentation & Enhancement
28
+ Date: Wed Dec 31 11:52:52 2025
29
+
30
+ Changes:
31
+
32
+ - Updated NEWS.md and README.md with new features and improvements
33
+ - Added tilde expansion feature in shell commands (~ expands to home directory)
34
+ - Enhanced filesystem type recognition
35
+ - Improved terminal command handling
36
+ - Removed 292 lines from core/kernel/src/tree/lib/commands/index.ts (edit command moved to separate package)
37
+ - Added shell functionality in core/kernel/src/tree/shell.ts (71 new lines)
38
+ - Enhanced terminal and filesystem modules
39
+
40
+ Files Modified: 9 files (+166, -327)
41
+
42
+ ***
43
+
44
+ 2. b4454a1 - chore: Bump turbo package version from 2.5.4 to 2.7.2
45
+
46
+ Type: Dependency Update
47
+
48
+ Changes:
49
+
50
+ - Updated Turbo monorepo tool from version 2.5.4 to 2.7.2
51
+ - Updated package.json and pnpm-lock.yaml files
52
+
53
+ Impact: Infrastructure improvement for better monorepo tooling support
54
+
55
+ ***
56
+
57
+ 3. 6660f4c - chore: Update pnpm-lock.yaml files across multiple applications and modules
58
+
59
+ Type: Dependency Maintenance
60
+
61
+ Changes:
62
+
63
+ - Cleaned up outdated checksum entries in pnpm-lock.yaml files
64
+ - Ensured consistency in package versions across the monorepo
65
+ - Updated lockfiles in:
66
+ - Multiple apps (ai, boilerplate, code, news, python, webamp)
67
+ - Core packages (bios, jaffa, kernel, metal, swapi, types, utils)
68
+ - Device packages (audio, battery, bluetooth, echo, gamepad, geo, gpu, hid, midi, presentation, sensors, serial, usb, webgl)
69
+ - Modules and utils
70
+
71
+ Impact: Improved dependency consistency and resolved potential checksum issues
72
+
73
+ ***
74
+
75
+ 4. 01da80e - feat: improve and move edit command to its own package
76
+
77
+ Type: Feature (Major Refactor)
78
+ Date: Wed Dec 31 12:48:45 2025
79
+
80
+ Changes:
81
+
82
+ - Extracted edit command from kernel into standalone apps/edit package
83
+ - Created comprehensive editor implementation with:
84
+ - Multiple editing modes: normal, insert, replace, command
85
+ - File operations support
86
+ - Renderer for terminal-based editing
87
+ - Type definitions for editor state
88
+ - Removed 292 lines of edit command code from core/kernel/src/tree/lib/commands/index.ts
89
+ - Added build configuration (build.cjs)
90
+ - Updated package dependencies
91
+
92
+ Files Modified: 14 files (+1,054, -304)
93
+
94
+ Impact: Better separation of concerns, improved maintainability, and enhanced editor functionality
95
+
96
+ ***
97
+
98
+ 5. 90072ec - feat: add 'ln' command and enhance 'ls' command to support symbolic and hard link information
99
+
100
+ Type: Feature
101
+ Date: Wed Dec 31 13:11:53 2025
102
+
103
+ Changes:
104
+
105
+ - Added new ln command for creating symbolic and hard links (core/utils/src/commands/ln.ts - 108 lines)
106
+ - Enhanced ls command to display link information:
107
+ - Shows link count for files
108
+ - Displays target path for symbolic links
109
+ - Improved file listing with link details
110
+ - Updated command exports in core/utils/src/index.ts
111
+
112
+ Files Modified: 3 files (+196, -11)
113
+
114
+ Impact: Better filesystem management capabilities, improved visibility into file relationships
115
+
116
+ ***
117
+
118
+ SUMMARY BY CATEGORY
119
+
120
+ Features:
121
+
122
+ - Edit Command Package: Extracted and improved editor into standalone package with multiple modes
123
+ - Link Command: New ln command for creating symbolic and hard links
124
+ - Enhanced LS: Improved ls command with link information display
125
+ - Tilde Expansion: Shell command support for ~ home directory expansion
126
+
127
+ Documentation:
128
+
129
+ - Updated NEWS and README files with latest changes
130
+
131
+ Infrastructure:
132
+
133
+ - Turbo version bump (2.5.4 -> 2.7.2)
134
+ - Dependency lockfile cleanup across entire monorepo
135
+
136
+ Code Quality:
137
+
138
+ - Better separation of concerns (edit command extraction)
139
+ - Improved filesystem type recognition
140
+ - Enhanced terminal command handling
141
+
142
+ ***
143
+
144
+ AFFECTED PACKAGES
145
+
146
+ Core Packages:
147
+
148
+ - @ecmaos/kernel - Shell, terminal, filesystem enhancements
149
+ - @ecmaos/types - Shell type updates
150
+ - @ecmaos/utils - New ln command, enhanced ls command
151
+
152
+ Applications:
153
+
154
+ - apps/edit - New standalone editor package
155
+
156
+ Dependencies:
157
+
158
+ - All packages: Lockfile updates for consistency
159
+
160
+ ***
161
+
162
+ BREAKING CHANGES
163
+
164
+ None identified. All changes appear to be additive or internal refactoring.
165
+
166
+ ***
167
+
168
+ MIGRATION NOTES
169
+
170
+ - The edit command has been moved from the kernel to apps/edit package. Any code referencing the edit command in the kernel should be updated to use the new package.
171
+ - The ls command now shows additional link information, which may affect scripts parsing its output.
172
+ - Shell commands now support tilde expansion (~), which may affect scripts that previously handled paths differently.
173
+
3
174
  ## 0.4.1
4
175
 
5
176
  ### Patch Changes
package/dist/shell.d.ts CHANGED
@@ -58,5 +58,11 @@ export interface Shell {
58
58
  * @param args - Arguments to set
59
59
  */
60
60
  setPositionalParameters(args: string[]): void;
61
+ /**
62
+ * Expands tilde (~) to the user's home directory
63
+ * @param input - String that may contain tilde
64
+ * @returns String with tilde expanded to HOME directory
65
+ */
66
+ expandTilde(input: string): string;
61
67
  }
62
68
  //# sourceMappingURL=shell.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../shell.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,gCAAgC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,4BAA4B;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,qCAAqC;IACrC,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,cAAc;IACd,GAAG,EAAE,MAAM,CAAA;IACX,eAAe;IACf,GAAG,EAAE,MAAM,CAAA;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,gCAAgC;IAChC,GAAG,EAAE,MAAM,CAAA;IACX,4BAA4B;IAC5B,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,sCAAsC;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1C,eAAe;IACf,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,iCAAiC;IACjC,WAAW,EAAE,WAAW,CAAA;IACxB,oBAAoB;IACpB,OAAO,EAAE,YAAY,CAAA;IACrB,uBAAuB;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IAEzB;;;OAGG;IACH,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IAEhC;;OAEG;IACH,yBAAyB,IAAI,IAAI,CAAA;IAEjC;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAEtC;;;OAGG;IACH,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;CAC9C"}
1
+ {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../shell.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,gCAAgC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,4BAA4B;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,qCAAqC;IACrC,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,cAAc;IACd,GAAG,EAAE,MAAM,CAAA;IACX,eAAe;IACf,GAAG,EAAE,MAAM,CAAA;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,gCAAgC;IAChC,GAAG,EAAE,MAAM,CAAA;IACX,4BAA4B;IAC5B,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,sCAAsC;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1C,eAAe;IACf,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,iCAAiC;IACjC,WAAW,EAAE,WAAW,CAAA;IACxB,oBAAoB;IACpB,OAAO,EAAE,YAAY,CAAA;IACrB,uBAAuB;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IAEzB;;;OAGG;IACH,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IAEhC;;OAEG;IACH,yBAAyB,IAAI,IAAI,CAAA;IAEjC;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAEtC;;;OAGG;IACH,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IAE7C;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CACnC"}
package/dist/users.d.ts CHANGED
@@ -50,6 +50,23 @@ export interface AddUserOptions {
50
50
  /** Skip writing to passwd file */
51
51
  noWrite?: boolean;
52
52
  }
53
+ /**
54
+ * Interface representing a passkey credential
55
+ */
56
+ export interface Passkey {
57
+ /** Unique identifier for this passkey */
58
+ id: string;
59
+ /** Base64-encoded credential ID from WebAuthn */
60
+ credentialId: string;
61
+ /** Public key data (COSE format) */
62
+ publicKey: ArrayBuffer | Uint8Array;
63
+ /** Timestamp when passkey was created */
64
+ createdAt: number;
65
+ /** Timestamp when passkey was last used (optional) */
66
+ lastUsed?: number;
67
+ /** User-friendly name/description (optional) */
68
+ name?: string;
69
+ }
53
70
  /**
54
71
  * Interface for user management functionality
55
72
  */
@@ -74,9 +91,11 @@ export interface Users {
74
91
  /**
75
92
  * Login with credentials
76
93
  * @param username - Username
77
- * @param password - Password
94
+ * @param password - Password (optional if using passkey)
95
+ * @param passkeyCredential - Passkey credential (optional if using password)
78
96
  */
79
- login(username: string, password: string): Promise<{
97
+ login(username: string, password?: string, passkeyCredential?: PublicKeyCredential): Promise<{
98
+ user: User;
80
99
  cred: {
81
100
  uid: number;
82
101
  gid: number;
@@ -99,5 +118,33 @@ export interface Users {
99
118
  * @param updates - User properties to update
100
119
  */
101
120
  update(uid: UID, updates: Partial<User>): Promise<void>;
121
+ /**
122
+ * Get all passkeys for a user
123
+ * @param uid - User ID
124
+ */
125
+ getPasskeys(uid: UID): Promise<Passkey[]>;
126
+ /**
127
+ * Save passkeys for a user
128
+ * @param uid - User ID
129
+ * @param passkeys - Array of passkeys to save
130
+ */
131
+ savePasskeys(uid: UID, passkeys: Passkey[]): Promise<void>;
132
+ /**
133
+ * Add a passkey to a user's collection
134
+ * @param uid - User ID
135
+ * @param passkey - Passkey to add
136
+ */
137
+ addPasskey(uid: UID, passkey: Passkey): Promise<void>;
138
+ /**
139
+ * Remove a passkey by ID
140
+ * @param uid - User ID
141
+ * @param passkeyId - Passkey ID to remove
142
+ */
143
+ removePasskey(uid: UID, passkeyId: string): Promise<void>;
144
+ /**
145
+ * Check if a user has any registered passkeys
146
+ * @param uid - User ID
147
+ */
148
+ hasPasskeys(uid: UID): Promise<boolean>;
102
149
  }
103
150
  //# sourceMappingURL=users.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../users.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,mBAAmB;AACnB,MAAM,MAAM,GAAG,GAAG,MAAM,CAAA;AAExB,oBAAoB;AACpB,MAAM,MAAM,GAAG,GAAG,MAAM,CAAA;AAExB;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,eAAe;IACf,GAAG,EAAE,MAAM,CAAA;IACX,wBAAwB;IACxB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,eAAe;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,oBAAoB;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc;IACd,GAAG,EAAE,MAAM,CAAA;IACX,0CAA0C;IAC1C,OAAO,CAAC,EAAE;QACR,qCAAqC;QACrC,UAAU,CAAC,EAAE,UAAU,GAAG,MAAM,CAAA;QAChC,iBAAiB;QACjB,SAAS,EAAE,UAAU,CAAA;KACtB,CAAA;CACF;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,4BAA4B;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,mCAAmC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,kCAAkC;IAClC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,oBAAoB;IACpB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAE5B;;;;OAIG;IACH,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEjE;;;OAGG;IACH,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,GAAG,SAAS,CAAA;IAE/B;;OAEG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAErB;;;;OAIG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAA;IAE1F;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEjE;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE/B;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACxD"}
1
+ {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../users.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,mBAAmB;AACnB,MAAM,MAAM,GAAG,GAAG,MAAM,CAAA;AAExB,oBAAoB;AACpB,MAAM,MAAM,GAAG,GAAG,MAAM,CAAA;AAExB;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,eAAe;IACf,GAAG,EAAE,MAAM,CAAA;IACX,wBAAwB;IACxB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,eAAe;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,oBAAoB;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc;IACd,GAAG,EAAE,MAAM,CAAA;IACX,0CAA0C;IAC1C,OAAO,CAAC,EAAE;QACR,qCAAqC;QACrC,UAAU,CAAC,EAAE,UAAU,GAAG,MAAM,CAAA;QAChC,iBAAiB;QACjB,SAAS,EAAE,UAAU,CAAA;KACtB,CAAA;CACF;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,4BAA4B;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,mCAAmC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,kCAAkC;IAClC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,yCAAyC;IACzC,EAAE,EAAE,MAAM,CAAA;IACV,iDAAiD;IACjD,YAAY,EAAE,MAAM,CAAA;IACpB,oCAAoC;IACpC,SAAS,EAAE,WAAW,GAAG,UAAU,CAAA;IACnC,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAA;IACjB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,oBAAoB;IACpB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAE5B;;;;OAIG;IACH,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEjE;;;OAGG;IACH,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,GAAG,SAAS,CAAA;IAE/B;;OAEG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAErB;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAA;IAEhJ;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEjE;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE/B;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEvD;;;OAGG;IACH,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;IAEzC;;;;OAIG;IACH,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE1D;;;;OAIG;IACH,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAErD;;;;OAIG;IACH,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEzD;;;OAGG;IACH,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CACxC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ecmaos/types",
3
- "version": "0.4.1",
3
+ "version": "0.4.3",
4
4
  "description": "Type definitions for ecmaOS",
5
5
  "author": "Jay Mathis",
6
6
  "license": "MIT+Apache-2.0",
package/shell.ts CHANGED
@@ -65,4 +65,11 @@ export interface Shell {
65
65
  * @param args - Arguments to set
66
66
  */
67
67
  setPositionalParameters(args: string[]): void
68
- }
68
+
69
+ /**
70
+ * Expands tilde (~) to the user's home directory
71
+ * @param input - String that may contain tilde
72
+ * @returns String with tilde expanded to HOME directory
73
+ */
74
+ expandTilde(input: string): string
75
+ }
package/users.ts CHANGED
@@ -57,6 +57,24 @@ export interface AddUserOptions {
57
57
  noWrite?: boolean
58
58
  }
59
59
 
60
+ /**
61
+ * Interface representing a passkey credential
62
+ */
63
+ export interface Passkey {
64
+ /** Unique identifier for this passkey */
65
+ id: string
66
+ /** Base64-encoded credential ID from WebAuthn */
67
+ credentialId: string
68
+ /** Public key data (COSE format) */
69
+ publicKey: ArrayBuffer | Uint8Array
70
+ /** Timestamp when passkey was created */
71
+ createdAt: number
72
+ /** Timestamp when passkey was last used (optional) */
73
+ lastUsed?: number
74
+ /** User-friendly name/description (optional) */
75
+ name?: string
76
+ }
77
+
60
78
  /**
61
79
  * Interface for user management functionality
62
80
  */
@@ -85,9 +103,10 @@ export interface Users {
85
103
  /**
86
104
  * Login with credentials
87
105
  * @param username - Username
88
- * @param password - Password
106
+ * @param password - Password (optional if using passkey)
107
+ * @param passkeyCredential - Passkey credential (optional if using password)
89
108
  */
90
- login(username: string, password: string): Promise<{ cred: { uid: number, gid: number } }>
109
+ login(username: string, password?: string, passkeyCredential?: PublicKeyCredential): Promise<{ user: User, cred: { uid: number, gid: number } }>
91
110
 
92
111
  /**
93
112
  * Change a user's password
@@ -108,4 +127,37 @@ export interface Users {
108
127
  * @param updates - User properties to update
109
128
  */
110
129
  update(uid: UID, updates: Partial<User>): Promise<void>
130
+
131
+ /**
132
+ * Get all passkeys for a user
133
+ * @param uid - User ID
134
+ */
135
+ getPasskeys(uid: UID): Promise<Passkey[]>
136
+
137
+ /**
138
+ * Save passkeys for a user
139
+ * @param uid - User ID
140
+ * @param passkeys - Array of passkeys to save
141
+ */
142
+ savePasskeys(uid: UID, passkeys: Passkey[]): Promise<void>
143
+
144
+ /**
145
+ * Add a passkey to a user's collection
146
+ * @param uid - User ID
147
+ * @param passkey - Passkey to add
148
+ */
149
+ addPasskey(uid: UID, passkey: Passkey): Promise<void>
150
+
151
+ /**
152
+ * Remove a passkey by ID
153
+ * @param uid - User ID
154
+ * @param passkeyId - Passkey ID to remove
155
+ */
156
+ removePasskey(uid: UID, passkeyId: string): Promise<void>
157
+
158
+ /**
159
+ * Check if a user has any registered passkeys
160
+ * @param uid - User ID
161
+ */
162
+ hasPasskeys(uid: UID): Promise<boolean>
111
163
  }