@ibgib/web-gib 0.0.62 → 0.0.64

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.
Files changed (98) hide show
  1. package/README.md +4 -0
  2. package/dist/AUTO-GENERATED-version.d.mts +1 -1
  3. package/dist/AUTO-GENERATED-version.mjs +1 -1
  4. package/dist/helpers.web.d.mts +17 -2
  5. package/dist/helpers.web.d.mts.map +1 -1
  6. package/dist/helpers.web.mjs +67 -2
  7. package/dist/helpers.web.mjs.map +1 -1
  8. package/dist/helpers.web.respec.mjs +37 -10
  9. package/dist/helpers.web.respec.mjs.map +1 -1
  10. package/dist/identity/passkey-helper.d.mts +7 -2
  11. package/dist/identity/passkey-helper.d.mts.map +1 -1
  12. package/dist/identity/passkey-helper.mjs +33 -12
  13. package/dist/identity/passkey-helper.mjs.map +1 -1
  14. package/dist/index.d.mts +3 -0
  15. package/dist/index.d.mts.map +1 -1
  16. package/dist/index.mjs +4 -0
  17. package/dist/index.mjs.map +1 -1
  18. package/dist/ui/component/identity/keystone-creator/keystone-creator.css +26 -0
  19. package/dist/ui/component/identity/keystone-creator/keystone-creator.d.mts.map +1 -1
  20. package/dist/ui/component/identity/keystone-creator/keystone-creator.html +18 -1
  21. package/dist/ui/component/identity/keystone-creator/keystone-creator.mjs +10 -2
  22. package/dist/ui/component/identity/keystone-creator/keystone-creator.mjs.map +1 -1
  23. package/dist/ui/component/identity/keystone-details/keystone-details.d.mts +12 -0
  24. package/dist/ui/component/identity/keystone-details/keystone-details.d.mts.map +1 -1
  25. package/dist/ui/component/identity/keystone-details/keystone-details.html +8 -0
  26. package/dist/ui/component/identity/keystone-details/keystone-details.mjs +419 -305
  27. package/dist/ui/component/identity/keystone-details/keystone-details.mjs.map +1 -1
  28. package/dist/ui/ui-helpers.d.mts.map +1 -1
  29. package/dist/ui/ui-helpers.mjs +7 -2
  30. package/dist/ui/ui-helpers.mjs.map +1 -1
  31. package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-constants.d.mts +7 -0
  32. package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-constants.d.mts.map +1 -0
  33. package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-constants.mjs +7 -0
  34. package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-constants.mjs.map +1 -0
  35. package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-types.d.mts +24 -0
  36. package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-types.d.mts.map +1 -0
  37. package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-types.mjs +23 -0
  38. package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-types.mjs.map +1 -0
  39. package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-v1.d.mts +85 -0
  40. package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-v1.d.mts.map +1 -0
  41. package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-v1.mjs +343 -0
  42. package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-v1.mjs.map +1 -0
  43. package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-v1.respec.d.mts +8 -0
  44. package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-v1.respec.d.mts.map +1 -0
  45. package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-v1.respec.mjs +249 -0
  46. package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-v1.respec.mjs.map +1 -0
  47. package/package.json +2 -2
  48. package/src/AUTO-GENERATED-version.mts +1 -1
  49. package/src/helpers.mts +1 -1
  50. package/src/helpers.web.mts +95 -5
  51. package/src/helpers.web.respec.mts +41 -10
  52. package/src/identity/passkey-helper.mts +43 -10
  53. package/src/index.mts +5 -0
  54. package/src/ui/component/identity/keystone-creator/keystone-creator.css +26 -0
  55. package/src/ui/component/identity/keystone-creator/keystone-creator.html +18 -1
  56. package/src/ui/component/identity/keystone-creator/keystone-creator.mts +12 -2
  57. package/src/ui/component/identity/keystone-details/keystone-details.html +8 -0
  58. package/src/ui/component/identity/keystone-details/keystone-details.mts +474 -339
  59. package/src/ui/ui-helpers.mts +6 -2
  60. package/src/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-constants.mts +8 -0
  61. package/src/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-types.mts +53 -0
  62. package/src/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-v1.mts +424 -0
  63. package/src/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-v1.respec.mts +304 -0
  64. package/tools/auto-generated-agent-skills/skills/ibgib-create-app/SKILL.md +65 -39
  65. package/tools/auto-generated-agent-skills/skills/ibgib-create-client-app/SKILL.md +51 -0
  66. package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-core → ibgib-create-client-app-core}/SKILL.md +26 -22
  67. package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-witness → ibgib-create-client-app-witness}/SKILL.md +11 -7
  68. package/tools/auto-generated-agent-skills/skills/ibgib-create-client-identity/SKILL.md +78 -0
  69. package/tools/auto-generated-agent-skills/skills/ibgib-create-client-shell/SKILL.md +42 -0
  70. package/tools/auto-generated-agent-skills/skills/ibgib-create-server-app/SKILL.md +50 -0
  71. package/tools/auto-generated-agent-skills/skills/ibgib-create-server-app/templates/Dockerfile.template +14 -0
  72. package/tools/auto-generated-agent-skills/skills/ibgib-create-server-app/templates/docker-compose.yml.template +33 -0
  73. package/tools/auto-generated-agent-skills/skills/ibgib-create-server-app/templates/server.mts.template +97 -0
  74. package/tools/auto-generated-agent-skills/skills/ibgib-create-server-app/templates/tsconfig.server.json.template +29 -0
  75. package/tools/auto-generated-agent-skills/skills/ibgib-implementation-plan/SKILL.md +4 -1
  76. package/src/identity/custodian-delegate-helper.mts.bak +0 -7
  77. package/src/identity/sso/sso-config-helper.mts.bak +0 -52
  78. package/src/identity/sso/sso-custodian-service.mts.bak +0 -566
  79. package/src/identity/sso/sso-custodian-service.respec.mts.bak +0 -298
  80. package/tools/auto-generated-agent-skills/skills/ibgib-create-shell/SKILL.md +0 -40
  81. /package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-core → ibgib-create-client-app-core}/generate-id.js +0 -0
  82. /package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-core → ibgib-create-client-app-core}/generate-version-file.js +0 -0
  83. /package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-core → ibgib-create-client-app-core}/templates/bootstrap.mts.template +0 -0
  84. /package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-core → ibgib-create-client-app-core}/templates/constants.mts.template +0 -0
  85. /package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-core → ibgib-create-client-app-core}/templates/declarations.d.ts.template +0 -0
  86. /package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-core → ibgib-create-client-app-core}/templates/helpers.web.mts.template +0 -0
  87. /package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-core → ibgib-create-client-app-core}/templates/index.html.template +0 -0
  88. /package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-core → ibgib-create-client-app-core}/templates/index.mts.template +0 -0
  89. /package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-core → ibgib-create-client-app-core}/templates/script.mts.template +0 -0
  90. /package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-core → ibgib-create-client-app-core}/templates/types.mts.template +0 -0
  91. /package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-witness → ibgib-create-client-app-witness}/templates/api/function-infos.web.mts.template +0 -0
  92. /package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-witness → ibgib-create-client-app-witness}/templates/witness/app/app-v1.mts.template +0 -0
  93. /package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-witness → ibgib-create-client-app-witness}/templates/witness/app/constants.mts.template +0 -0
  94. /package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-witness → ibgib-create-client-app-witness}/templates/witness/app/helper.mts.template +0 -0
  95. /package/tools/auto-generated-agent-skills/skills/{ibgib-create-app-witness → ibgib-create-client-app-witness}/templates/witness/app/types.mts.template +0 -0
  96. /package/tools/auto-generated-agent-skills/skills/{ibgib-create-shell → ibgib-create-client-shell}/templates/ui/shell/shell-constants.mts.template +0 -0
  97. /package/tools/auto-generated-agent-skills/skills/{ibgib-create-shell → ibgib-create-client-shell}/templates/ui/shell/shell-service.mts.template +0 -0
  98. /package/tools/auto-generated-agent-skills/skills/{ibgib-create-shell → ibgib-create-client-shell}/templates/ui/shell/shell-types.mts.template +0 -0
@@ -199,4 +199,30 @@ h2 {
199
199
  input::placeholder {
200
200
  color: rgba(255, 255, 255, 0.35);
201
201
  opacity: 1;
202
+ }
203
+
204
+ .public-directory-notice {
205
+ padding: 0.75rem 1rem;
206
+ border-radius: 8px;
207
+ background: rgba(137, 180, 250, 0.08);
208
+ border: 1px solid rgba(137, 180, 250, 0.25);
209
+ display: flex;
210
+ gap: 0.6rem;
211
+ align-items: flex-start;
212
+ text-align: left;
213
+ }
214
+
215
+ .notice-icon {
216
+ font-size: 1.1rem;
217
+ line-height: 1.2;
218
+ }
219
+
220
+ .notice-body {
221
+ font-size: 0.82rem;
222
+ color: var(--clr-text, #cdd6f4);
223
+ line-height: 1.45;
224
+ }
225
+
226
+ .notice-body strong {
227
+ color: #89b4fa;
202
228
  }
@@ -80,6 +80,15 @@
80
80
  <input type="text" id="input-passkey-name" placeholder="e.g. MacBook Touch ID, YubiKey 5Ci, Android Phone..." class="text-input">
81
81
  </div>
82
82
 
83
+ <div class="input-group">
84
+ <label for="select-passkey-attachment">Authenticator Device Target</label>
85
+ <select id="select-passkey-attachment" class="text-input" style="cursor: pointer;">
86
+ <option value="any" selected>Any / Smart Chooser (All Options, No Forced Windows PIN)</option>
87
+ <option value="cross-platform">Hardware Security Key (USB / NFC YubiKey Directly)</option>
88
+ <option value="platform">Built-in Biometrics (Windows Hello, Touch ID, Fingerprint)</option>
89
+ </select>
90
+ </div>
91
+
83
92
  <div class="checkbox-group" style="margin-top: 0.5rem; margin-bottom: 1rem; display: flex; align-items: center; gap: 0.5rem;">
84
93
  <input type="checkbox" id="checkbox-passkey-make-active" checked style="cursor: pointer; width: 1rem; height: 1rem;">
85
94
  <label for="checkbox-passkey-make-active" style="cursor: pointer; font-size: 0.9rem; user-select: none;">Make this the active identity</label>
@@ -150,13 +159,21 @@
150
159
  <p class="warning">⚠️ Store this address safely. It is your root identity for this space.</p>
151
160
  </div>
152
161
 
162
+ <!-- Public Directory Notice Callout -->
163
+ <div class="public-directory-notice">
164
+ <span class="notice-icon">ℹ️</span>
165
+ <div class="notice-body">
166
+ <strong>Public Directory Notice:</strong> Your username and registered email address are associated with your public identity keystone and can be queried on the network (similar to a public PGP key or public DNS record).
167
+ </div>
168
+ </div>
169
+
153
170
  <div class="switch-workflow" style="margin-top: 1.2rem; text-align: center; font-size: 0.9rem; color: #a6adc8;">
154
171
  Already have a device paired? <button id="btn-switch-sign-in" class="link-btn" style="background: none; border: none; color: #89b4fa; font-weight: 600; cursor: pointer; text-decoration: underline; padding: 0; font-size: 0.9rem;">Pair New Device</button>
155
172
  </div>
156
173
 
157
174
  <!-- Privacy Footer Note -->
158
175
  <div class="privacy-footer" style="margin-top: 1rem; text-align: center; font-size: 0.78rem; color: #a6adc8; line-height: 1.4;">
159
- ℹ️ Primary email addresses and identity keystones form part of the public graph for account discovery. Business data requires authorized sync delegates. Learn more in our <a id="link-privacy-policy" href="#privacy" style="color: #89b4fa; text-decoration: underline;">Privacy Policy</a>.
176
+ Identity keystones form part of the public graph for account discovery. Learn more in our <a id="link-privacy-policy" href="/privacy" target="_blank" rel="noopener" style="color: #89b4fa; text-decoration: underline;">Privacy Policy</a>.
160
177
  </div>
161
178
  </div>
162
179
  </div>
@@ -696,12 +696,21 @@ export class KeystoneCreatorComponentInstance
696
696
  animationEmoji: '🛡️'
697
697
  });
698
698
 
699
+ const selectAttachment = this.shadowRoot?.querySelector('#select-passkey-attachment') as HTMLSelectElement | null;
700
+ const attachmentVal = selectAttachment?.value;
701
+ const authenticatorAttachment: AuthenticatorAttachment | undefined =
702
+ (attachmentVal === 'cross-platform' || attachmentVal === 'platform')
703
+ ? attachmentVal
704
+ : undefined;
705
+
699
706
  const rawSalt = crypto.getRandomValues(new Uint8Array(32));
700
707
  const saltHex = bufferToHex(rawSalt.buffer as ArrayBuffer);
701
708
  const regResult = await registerPasskeyCredential({
702
709
  username,
703
710
  displayName: username,
704
- salt: saltHex
711
+ salt: saltHex,
712
+ authenticatorAttachment,
713
+ userVerification: 'preferred'
705
714
  });
706
715
  const { credentialId, transports } = regResult;
707
716
 
@@ -710,7 +719,8 @@ export class KeystoneCreatorComponentInstance
710
719
  const prfResult = await evaluatePasskeyPrf({
711
720
  credentialId,
712
721
  salt: saltHex,
713
- transports
722
+ transports,
723
+ userVerification: 'preferred'
714
724
  });
715
725
  passkeySecret = prfResult.passkeySecret;
716
726
  }
@@ -97,6 +97,14 @@
97
97
  </tbody>
98
98
  </table>
99
99
  </div>
100
+ <div class="form-group" style="margin-top: 1rem; max-width: 360px;">
101
+ <label for="select-passkey-attachment" style="font-size: 0.85rem; color: var(--clr-text-secondary, #b3b3b3);">Authenticator Device Target</label>
102
+ <select id="select-passkey-attachment" class="form-control" style="width: 100%; padding: 0.4rem 0.6rem; margin-top: 0.25rem; border-radius: 4px; background: rgba(0,0,0,0.3); color: inherit; border: 1px solid rgba(255,255,255,0.2);">
103
+ <option value="">Any (Default / Auto-Detect)</option>
104
+ <option value="cross-platform">🔑 Hardware Security Key (USB / NFC)</option>
105
+ <option value="platform">💻 Built-in Biometrics (Fingerprint / Touch ID)</option>
106
+ </select>
107
+ </div>
100
108
  <div class="action-row" style="margin-top: 0.5rem;">
101
109
  <button id="btn-add-passkey" class="action-btn">
102
110
  🛡️ Register New Passkey / Security Key