@awiki/dsh-plugin 0.2.5 → 0.3.0-rc.2

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 (124) hide show
  1. package/README.md +69 -28
  2. package/README.zh.md +60 -21
  3. package/THIRD_PARTY_NOTICES.md +1 -1
  4. package/cordis.patch.yml +0 -8
  5. package/lib/client.js +6755 -2022
  6. package/lib/client.js.map +1 -1
  7. package/lib/index.js +1321 -72
  8. package/lib/model-proxy-contract.js +8 -1
  9. package/lib/provider.js +3 -1
  10. package/lib/{sdk-adapter-DKgkyApB.mjs → sdk-adapter-BIbsJmRj.mjs} +245 -4
  11. package/lib/typert.host.js +944 -57
  12. package/lib/typert.remote-client.d.ts +37 -1
  13. package/lib/typert.remote-client.d.ts.map +1 -1
  14. package/lib/typert.remote-client.js +944 -57
  15. package/lib/types/client/AwikiGroupAccessNotice.d.ts +12 -0
  16. package/lib/types/client/AwikiGroupAccessNotice.d.ts.map +1 -0
  17. package/lib/types/client/AwikiGroupAccessNotice.js +31 -0
  18. package/lib/types/client/AwikiGroupAccessNotice.js.map +1 -0
  19. package/lib/types/client/AwikiGroupDetails.d.ts +23 -0
  20. package/lib/types/client/AwikiGroupDetails.d.ts.map +1 -0
  21. package/lib/types/client/AwikiGroupDetails.js +144 -0
  22. package/lib/types/client/AwikiGroupDetails.js.map +1 -0
  23. package/lib/types/client/AwikiIdentityAccess.d.ts +22 -0
  24. package/lib/types/client/AwikiIdentityAccess.d.ts.map +1 -0
  25. package/lib/types/client/AwikiIdentityAccess.js +156 -0
  26. package/lib/types/client/AwikiIdentityAccess.js.map +1 -0
  27. package/lib/types/client/AwikiIdentityPage.d.ts +11 -0
  28. package/lib/types/client/AwikiIdentityPage.d.ts.map +1 -0
  29. package/lib/types/client/AwikiIdentityPage.js +8 -0
  30. package/lib/types/client/AwikiIdentityPage.js.map +1 -0
  31. package/lib/types/client/AwikiMail.d.ts +2 -1
  32. package/lib/types/client/AwikiMail.d.ts.map +1 -1
  33. package/lib/types/client/AwikiMail.js +157 -33
  34. package/lib/types/client/AwikiMail.js.map +1 -1
  35. package/lib/types/client/AwikiOnboarding.d.ts.map +1 -1
  36. package/lib/types/client/AwikiOnboarding.js +29 -9
  37. package/lib/types/client/AwikiOnboarding.js.map +1 -1
  38. package/lib/types/client/AwikiOverlay.d.ts +0 -5
  39. package/lib/types/client/AwikiOverlay.d.ts.map +1 -1
  40. package/lib/types/client/AwikiOverlay.js +202 -129
  41. package/lib/types/client/AwikiOverlay.js.map +1 -1
  42. package/lib/types/client/AwikiProfileCard.d.ts +9 -0
  43. package/lib/types/client/AwikiProfileCard.d.ts.map +1 -0
  44. package/lib/types/client/AwikiProfileCard.js +90 -0
  45. package/lib/types/client/AwikiProfileCard.js.map +1 -0
  46. package/lib/types/client/AwikiRecoveryForm.d.ts +27 -0
  47. package/lib/types/client/AwikiRecoveryForm.d.ts.map +1 -0
  48. package/lib/types/client/AwikiRecoveryForm.js +152 -0
  49. package/lib/types/client/AwikiRecoveryForm.js.map +1 -0
  50. package/lib/types/client/AwikiSettingsSection.d.ts +0 -2
  51. package/lib/types/client/AwikiSettingsSection.d.ts.map +1 -1
  52. package/lib/types/client/AwikiSettingsSection.js +18 -16
  53. package/lib/types/client/AwikiSettingsSection.js.map +1 -1
  54. package/lib/types/client/MentionText.d.ts +7 -0
  55. package/lib/types/client/MentionText.d.ts.map +1 -0
  56. package/lib/types/client/MentionText.js +10 -0
  57. package/lib/types/client/MentionText.js.map +1 -0
  58. package/lib/types/client/controller.d.ts +131 -3
  59. package/lib/types/client/controller.d.ts.map +1 -1
  60. package/lib/types/client/controller.js +908 -29
  61. package/lib/types/client/controller.js.map +1 -1
  62. package/lib/types/client/index.d.ts.map +1 -1
  63. package/lib/types/client/index.js +24 -4
  64. package/lib/types/client/index.js.map +1 -1
  65. package/lib/types/client/mail-list-cache.d.ts +15 -0
  66. package/lib/types/client/mail-list-cache.d.ts.map +1 -0
  67. package/lib/types/client/mail-list-cache.js +212 -0
  68. package/lib/types/client/mail-list-cache.js.map +1 -0
  69. package/lib/types/client/mentions.d.ts +51 -0
  70. package/lib/types/client/mentions.d.ts.map +1 -0
  71. package/lib/types/client/mentions.js +165 -0
  72. package/lib/types/client/mentions.js.map +1 -0
  73. package/lib/types/client/model-proxy-controller.d.ts +4 -0
  74. package/lib/types/client/model-proxy-controller.d.ts.map +1 -1
  75. package/lib/types/client/model-proxy-controller.js +68 -3
  76. package/lib/types/client/model-proxy-controller.js.map +1 -1
  77. package/lib/types/client/recharge-availability.d.ts +1 -1
  78. package/lib/types/client/recharge-availability.d.ts.map +1 -1
  79. package/lib/types/client/recharge-availability.js +1 -1
  80. package/lib/types/client/recharge-availability.js.map +1 -1
  81. package/lib/types/client/settings-locales.d.ts +1 -1
  82. package/lib/types/client/settings-locales.d.ts.map +1 -1
  83. package/lib/types/client/settings-locales.js +14 -8
  84. package/lib/types/client/settings-locales.js.map +1 -1
  85. package/lib/types/client/slots.d.ts +27 -2
  86. package/lib/types/client/slots.d.ts.map +1 -1
  87. package/lib/types/conversation-preferences.d.ts +20 -0
  88. package/lib/types/conversation-preferences.d.ts.map +1 -0
  89. package/lib/types/conversation-preferences.js +294 -0
  90. package/lib/types/conversation-preferences.js.map +1 -0
  91. package/lib/types/index.d.ts +45 -6
  92. package/lib/types/index.d.ts.map +1 -1
  93. package/lib/types/index.js +562 -23
  94. package/lib/types/index.js.map +1 -1
  95. package/lib/types/model-proxy-contract.d.ts +6 -0
  96. package/lib/types/model-proxy-contract.d.ts.map +1 -1
  97. package/lib/types/model-proxy-contract.js +6 -0
  98. package/lib/types/model-proxy-contract.js.map +1 -1
  99. package/lib/types/provider-api.d.ts +29 -1
  100. package/lib/types/provider-api.d.ts.map +1 -1
  101. package/lib/types/provider.d.ts.map +1 -1
  102. package/lib/types/provider.js +2 -0
  103. package/lib/types/provider.js.map +1 -1
  104. package/lib/types/sdk-adapter.d.ts +18 -1
  105. package/lib/types/sdk-adapter.d.ts.map +1 -1
  106. package/lib/types/sdk-adapter.js +277 -4
  107. package/lib/types/sdk-adapter.js.map +1 -1
  108. package/lib/types/sent-mail-store.d.ts +22 -0
  109. package/lib/types/sent-mail-store.d.ts.map +1 -0
  110. package/lib/types/sent-mail-store.js +246 -0
  111. package/lib/types/sent-mail-store.js.map +1 -0
  112. package/lib/types/types.d.ts +183 -2
  113. package/lib/types/types.d.ts.map +1 -1
  114. package/lib/types/types.js.map +1 -1
  115. package/package.json +15 -26
  116. package/lib/model-proxy.js +0 -383
  117. package/lib/types/client/model-account-settings-availability.d.ts +0 -4
  118. package/lib/types/client/model-account-settings-availability.d.ts.map +0 -1
  119. package/lib/types/client/model-account-settings-availability.js +0 -4
  120. package/lib/types/client/model-account-settings-availability.js.map +0 -1
  121. package/lib/types/model-proxy.d.ts +0 -14
  122. package/lib/types/model-proxy.d.ts.map +0 -1
  123. package/lib/types/model-proxy.js +0 -371
  124. package/lib/types/model-proxy.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  /** Client release gate for AWiki account recharge. */
2
2
  /** Change only this value when the public recharge flow is ready to ship. */
3
- export declare const AWIKI_RECHARGE_ENABLED = false;
3
+ export declare const AWIKI_RECHARGE_ENABLED = true;
4
4
  /** Stable internal error used when a caller bypasses the guarded UI. */
5
5
  export declare const AWIKI_RECHARGE_DISABLED_ERROR = "awiki_recharge_disabled";
6
6
  //# sourceMappingURL=recharge-availability.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"recharge-availability.d.ts","sourceRoot":"","sources":["../../../src/client/recharge-availability.ts"],"names":[],"mappings":"AAAA,sDAAsD;AAEtD,6EAA6E;AAC7E,eAAO,MAAM,sBAAsB,QAAQ,CAAA;AAE3C,wEAAwE;AACxE,eAAO,MAAM,6BAA6B,4BAA4B,CAAA"}
1
+ {"version":3,"file":"recharge-availability.d.ts","sourceRoot":"","sources":["../../../src/client/recharge-availability.ts"],"names":[],"mappings":"AAAA,sDAAsD;AAEtD,6EAA6E;AAC7E,eAAO,MAAM,sBAAsB,OAAO,CAAA;AAE1C,wEAAwE;AACxE,eAAO,MAAM,6BAA6B,4BAA4B,CAAA"}
@@ -1,6 +1,6 @@
1
1
  /** Client release gate for AWiki account recharge. */
2
2
  /** Change only this value when the public recharge flow is ready to ship. */
3
- export const AWIKI_RECHARGE_ENABLED = false;
3
+ export const AWIKI_RECHARGE_ENABLED = true;
4
4
  /** Stable internal error used when a caller bypasses the guarded UI. */
5
5
  export const AWIKI_RECHARGE_DISABLED_ERROR = 'awiki_recharge_disabled';
6
6
  //# sourceMappingURL=recharge-availability.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"recharge-availability.js","sourceRoot":"","sources":["../../../src/client/recharge-availability.ts"],"names":[],"mappings":"AAAA,sDAAsD;AAEtD,6EAA6E;AAC7E,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,CAAA;AAE3C,wEAAwE;AACxE,MAAM,CAAC,MAAM,6BAA6B,GAAG,yBAAyB,CAAA"}
1
+ {"version":3,"file":"recharge-availability.js","sourceRoot":"","sources":["../../../src/client/recharge-availability.ts"],"names":[],"mappings":"AAAA,sDAAsD;AAEtD,6EAA6E;AAC7E,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAA;AAE1C,wEAAwE;AACxE,MAAM,CAAC,MAAM,6BAA6B,GAAG,yBAAyB,CAAA"}
@@ -1,6 +1,6 @@
1
1
  /** Bilingual copy for the AWiki settings section. */
2
2
  /** Keys owned by the AWiki settings page. */
3
- export type AwikiSettingsKey = 'nav' | 'intro' | 'tabAccount' | 'tabUsage' | 'tabAdvanced' | 'accountBalance' | 'billingMode' | 'billingStrict' | 'billingBypass' | 'billingBypassNotice' | 'modelStatus' | 'statusEnabled' | 'statusDisabled' | 'enableModels' | 'disableModels' | 'enablingModels' | 'disablingModels' | 'modelsEnabled' | 'modelsDisabled' | 'modelActionFailed' | 'insufficientBalanceTitle' | 'insufficientBalanceDescription' | 'modelAccessUnavailableTitle' | 'modelAccessUnavailable' | 'modelAccountLoading' | 'modelAccountUnavailable' | 'paymentsUnavailable' | 'rechargeComingSoonTitle' | 'rechargeComingSoonDescription' | 'rechargeComingSoonAcknowledge' | 'rechargeComingSoonClose' | 'rechargeAmount' | 'createRecharge' | 'creatingRecharge' | 'invalidRechargeAmount' | 'rechargeCreated' | 'rechargeFailed' | 'rechargePaid' | 'rechargeClosed' | 'rechargeStatusFailed' | 'paymentWindowFailed' | 'paymentQrAlt' | 'paymentQrHint' | 'paymentQrFailed' | 'pendingRechargeTitle' | 'pendingRechargeDescription' | 'pendingRechargeLimit' | 'continuePayment' | 'changeRechargeAmount' | 'cancelRechargeDialogTitle' | 'cancelRechargeDialogDescription' | 'cancelRechargeWarning' | 'confirmCancelRecharge' | 'cancellingRecharge' | 'rechargeCancelled' | 'rechargeCancelFailed' | 'refreshPaymentStatus' | 'refreshingPaymentStatus' | 'rechargeOrderStatus' | 'orderPending' | 'orderPaid' | 'orderClosed' | 'usageLoading' | 'usageDescription' | 'usageDescriptionBypass' | 'reloadUsage' | 'usageEmpty' | 'usageTokens' | 'usageCalculated' | 'usageCharged' | 'usageNoPrice' | 'onboardingUseApiKey' | 'onboardingLater' | 'onboardingClose' | 'onboardingConnectTitle' | 'onboardingIdentityUnavailable' | 'onboardingModelTitle' | 'onboardingRegistrationDescription' | 'onboardingRestoreTitle' | 'onboardingRestoreDescription' | 'onboardingRestore' | 'onboardingEnableTitle' | 'onboardingBypassDescription' | 'onboardingStrictDescription' | 'onboardingInsufficientBalanceDescription' | 'onboardingPendingRechargeDescription' | 'goToRecharge' | 'identityLoading' | 'identitySignedOutRequired' | 'identityRegistrationRequired' | 'identityRestoring' | 'domainLabel' | 'domainDescription' | 'defaultValue' | 'save' | 'saving' | 'reset' | 'saved' | 'restartNotice' | 'identityNotice' | 'invalidDomain' | 'saveFailed' | 'loading' | 'unavailable' | 'readOnly' | 'dangerTitle' | 'dangerDescription' | 'clearLocalData' | 'clearDialogTitle' | 'clearDialogDescription' | 'clearScope' | 'clearRemoteNotice' | 'clearConfirmationLabel' | 'clearConfirmationPhrase' | 'clearConfirm' | 'clearing' | 'clearSucceeded' | 'clearFailed' | 'cancel';
3
+ export type AwikiSettingsKey = 'nav' | 'intro' | 'tabAccount' | 'tabUsage' | 'tabAdvanced' | 'accountBalance' | 'billingMode' | 'billingStrict' | 'billingBypass' | 'billingBypassNotice' | 'modelStatus' | 'statusEnabled' | 'statusDisabled' | 'enableModels' | 'disableModels' | 'enablingModels' | 'disablingModels' | 'modelsEnabled' | 'modelsDisabled' | 'modelActionFailed' | 'insufficientBalanceTitle' | 'insufficientBalanceDescription' | 'modelAccessUnavailableTitle' | 'modelAccessUnavailable' | 'modelAccountLoading' | 'modelAccountUnavailable' | 'paymentsUnavailable' | 'rechargeComingSoonTitle' | 'rechargeComingSoonDescription' | 'rechargeComingSoonAcknowledge' | 'rechargeComingSoonClose' | 'rechargeAmount' | 'createRecharge' | 'creatingRecharge' | 'invalidRechargeAmount' | 'rechargeCreated' | 'rechargeFailed' | 'rechargePaid' | 'rechargeClosed' | 'rechargeStatusFailed' | 'paymentWindowFailed' | 'paymentQrAlt' | 'paymentQrHint' | 'paymentQrFailed' | 'pendingRechargeTitle' | 'pendingRechargeDescription' | 'pendingRechargeLimit' | 'continuePayment' | 'changeRechargeAmount' | 'cancelRechargeDialogTitle' | 'cancelRechargeDialogDescription' | 'cancelRechargeWarning' | 'confirmCancelRecharge' | 'cancellingRecharge' | 'rechargeCancelled' | 'rechargeCancelFailed' | 'refreshPaymentStatus' | 'refreshingPaymentStatus' | 'rechargeOrderStatus' | 'orderPending' | 'orderPaid' | 'orderClosed' | 'usageLoading' | 'usageDescription' | 'usageDescriptionBypass' | 'reloadUsage' | 'usageEmpty' | 'usageTokens' | 'usageCalculated' | 'usageCharged' | 'usageNoPrice' | 'onboardingUseApiKey' | 'onboardingLater' | 'onboardingClose' | 'onboardingConnectTitle' | 'onboardingIdentityUnavailable' | 'onboardingModelTitle' | 'onboardingRegistrationDescription' | 'onboardingRestoreTitle' | 'onboardingRestoreDescription' | 'onboardingRecoveryRequiredTitle' | 'onboardingRecoveryRequiredDescription' | 'onboardingRestore' | 'onboardingEnableTitle' | 'onboardingBypassDescription' | 'onboardingStrictDescription' | 'onboardingInsufficientBalanceDescription' | 'onboardingPendingRechargeDescription' | 'goToRecharge' | 'identityLoading' | 'identitySignedOutRequired' | 'identityRegistrationRequired' | 'identityRecoveryRequired' | 'identityRestoring' | 'domainLabel' | 'domainDescription' | 'defaultValue' | 'save' | 'saving' | 'reset' | 'saved' | 'restartNotice' | 'identityNotice' | 'invalidDomain' | 'saveFailed' | 'loading' | 'unavailable' | 'readOnly' | 'dangerTitle' | 'dangerDescription' | 'clearLocalData' | 'clearDialogTitle' | 'clearDialogDescription' | 'clearScope' | 'clearRemoteNotice' | 'clearConfirmationLabel' | 'clearConfirmationPhrase' | 'clearConfirm' | 'clearing' | 'clearSucceeded' | 'clearFailed' | 'cancel';
4
4
  /** Simplified Chinese dictionary. */
5
5
  export declare const zh: Record<AwikiSettingsKey, string>;
6
6
  /** English dictionary. */
@@ -1 +1 @@
1
- {"version":3,"file":"settings-locales.d.ts","sourceRoot":"","sources":["../../../src/client/settings-locales.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,6CAA6C;AAC7C,MAAM,MAAM,gBAAgB,GACxB,KAAK,GACL,OAAO,GACP,YAAY,GACZ,UAAU,GACV,aAAa,GACb,gBAAgB,GAChB,aAAa,GACb,eAAe,GACf,eAAe,GACf,qBAAqB,GACrB,aAAa,GACb,eAAe,GACf,gBAAgB,GAChB,cAAc,GACd,eAAe,GACf,gBAAgB,GAChB,iBAAiB,GACjB,eAAe,GACf,gBAAgB,GAChB,mBAAmB,GACnB,0BAA0B,GAC1B,gCAAgC,GAChC,6BAA6B,GAC7B,wBAAwB,GACxB,qBAAqB,GACrB,yBAAyB,GACzB,qBAAqB,GACrB,yBAAyB,GACzB,+BAA+B,GAC/B,+BAA+B,GAC/B,yBAAyB,GACzB,gBAAgB,GAChB,gBAAgB,GAChB,kBAAkB,GAClB,uBAAuB,GACvB,iBAAiB,GACjB,gBAAgB,GAChB,cAAc,GACd,gBAAgB,GAChB,sBAAsB,GACtB,qBAAqB,GACrB,cAAc,GACd,eAAe,GACf,iBAAiB,GACjB,sBAAsB,GACtB,4BAA4B,GAC5B,sBAAsB,GACtB,iBAAiB,GACjB,sBAAsB,GACtB,2BAA2B,GAC3B,iCAAiC,GACjC,uBAAuB,GACvB,uBAAuB,GACvB,oBAAoB,GACpB,mBAAmB,GACnB,sBAAsB,GACtB,sBAAsB,GACtB,yBAAyB,GACzB,qBAAqB,GACrB,cAAc,GACd,WAAW,GACX,aAAa,GACb,cAAc,GACd,kBAAkB,GAClB,wBAAwB,GACxB,aAAa,GACb,YAAY,GACZ,aAAa,GACb,iBAAiB,GACjB,cAAc,GACd,cAAc,GACd,qBAAqB,GACrB,iBAAiB,GACjB,iBAAiB,GACjB,wBAAwB,GACxB,+BAA+B,GAC/B,sBAAsB,GACtB,mCAAmC,GACnC,wBAAwB,GACxB,8BAA8B,GAC9B,mBAAmB,GACnB,uBAAuB,GACvB,6BAA6B,GAC7B,6BAA6B,GAC7B,0CAA0C,GAC1C,sCAAsC,GACtC,cAAc,GACd,iBAAiB,GACjB,2BAA2B,GAC3B,8BAA8B,GAC9B,mBAAmB,GACnB,aAAa,GACb,mBAAmB,GACnB,cAAc,GACd,MAAM,GACN,QAAQ,GACR,OAAO,GACP,OAAO,GACP,eAAe,GACf,gBAAgB,GAChB,eAAe,GACf,YAAY,GACZ,SAAS,GACT,aAAa,GACb,UAAU,GACV,aAAa,GACb,mBAAmB,GACnB,gBAAgB,GAChB,kBAAkB,GAClB,wBAAwB,GACxB,YAAY,GACZ,mBAAmB,GACnB,wBAAwB,GACxB,yBAAyB,GACzB,cAAc,GACd,UAAU,GACV,gBAAgB,GAChB,aAAa,GACb,QAAQ,CAAA;AAEZ,qCAAqC;AACrC,eAAO,MAAM,EAAE,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAwH/C,CAAA;AAED,0BAA0B;AAC1B,eAAO,MAAM,EAAE,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAwH/C,CAAA;AAED,OAAO,QAAQ,kCAAkC,CAAC;IAChD,UAAU,kBAAkB;QAC1B,gBAAgB,EAAE,gBAAgB,CAAA;KACnC;CACF"}
1
+ {"version":3,"file":"settings-locales.d.ts","sourceRoot":"","sources":["../../../src/client/settings-locales.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,6CAA6C;AAC7C,MAAM,MAAM,gBAAgB,GACxB,KAAK,GACL,OAAO,GACP,YAAY,GACZ,UAAU,GACV,aAAa,GACb,gBAAgB,GAChB,aAAa,GACb,eAAe,GACf,eAAe,GACf,qBAAqB,GACrB,aAAa,GACb,eAAe,GACf,gBAAgB,GAChB,cAAc,GACd,eAAe,GACf,gBAAgB,GAChB,iBAAiB,GACjB,eAAe,GACf,gBAAgB,GAChB,mBAAmB,GACnB,0BAA0B,GAC1B,gCAAgC,GAChC,6BAA6B,GAC7B,wBAAwB,GACxB,qBAAqB,GACrB,yBAAyB,GACzB,qBAAqB,GACrB,yBAAyB,GACzB,+BAA+B,GAC/B,+BAA+B,GAC/B,yBAAyB,GACzB,gBAAgB,GAChB,gBAAgB,GAChB,kBAAkB,GAClB,uBAAuB,GACvB,iBAAiB,GACjB,gBAAgB,GAChB,cAAc,GACd,gBAAgB,GAChB,sBAAsB,GACtB,qBAAqB,GACrB,cAAc,GACd,eAAe,GACf,iBAAiB,GACjB,sBAAsB,GACtB,4BAA4B,GAC5B,sBAAsB,GACtB,iBAAiB,GACjB,sBAAsB,GACtB,2BAA2B,GAC3B,iCAAiC,GACjC,uBAAuB,GACvB,uBAAuB,GACvB,oBAAoB,GACpB,mBAAmB,GACnB,sBAAsB,GACtB,sBAAsB,GACtB,yBAAyB,GACzB,qBAAqB,GACrB,cAAc,GACd,WAAW,GACX,aAAa,GACb,cAAc,GACd,kBAAkB,GAClB,wBAAwB,GACxB,aAAa,GACb,YAAY,GACZ,aAAa,GACb,iBAAiB,GACjB,cAAc,GACd,cAAc,GACd,qBAAqB,GACrB,iBAAiB,GACjB,iBAAiB,GACjB,wBAAwB,GACxB,+BAA+B,GAC/B,sBAAsB,GACtB,mCAAmC,GACnC,wBAAwB,GACxB,8BAA8B,GAC9B,iCAAiC,GACjC,uCAAuC,GACvC,mBAAmB,GACnB,uBAAuB,GACvB,6BAA6B,GAC7B,6BAA6B,GAC7B,0CAA0C,GAC1C,sCAAsC,GACtC,cAAc,GACd,iBAAiB,GACjB,2BAA2B,GAC3B,8BAA8B,GAC9B,0BAA0B,GAC1B,mBAAmB,GACnB,aAAa,GACb,mBAAmB,GACnB,cAAc,GACd,MAAM,GACN,QAAQ,GACR,OAAO,GACP,OAAO,GACP,eAAe,GACf,gBAAgB,GAChB,eAAe,GACf,YAAY,GACZ,SAAS,GACT,aAAa,GACb,UAAU,GACV,aAAa,GACb,mBAAmB,GACnB,gBAAgB,GAChB,kBAAkB,GAClB,wBAAwB,GACxB,YAAY,GACZ,mBAAmB,GACnB,wBAAwB,GACxB,yBAAyB,GACzB,cAAc,GACd,UAAU,GACV,gBAAgB,GAChB,aAAa,GACb,QAAQ,CAAA;AAEZ,qCAAqC;AACrC,eAAO,MAAM,EAAE,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CA2H/C,CAAA;AAED,0BAA0B;AAC1B,eAAO,MAAM,EAAE,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CA2H/C,CAAA;AAED,OAAO,QAAQ,kCAAkC,CAAC;IAChD,UAAU,kBAAkB;QAC1B,gBAAgB,EAAE,gBAAgB,CAAA;KACnC;CACF"}
@@ -2,7 +2,7 @@
2
2
  /** Simplified Chinese dictionary. */
3
3
  export const zh = {
4
4
  nav: 'AWiki',
5
- intro: '管理 AWiki 身份高级设置。',
5
+ intro: '管理 AWiki 托管模型账户、用量和身份高级设置。',
6
6
  tabAccount: '账户与充值',
7
7
  tabUsage: '用量明细',
8
8
  tabAdvanced: '高级设置',
@@ -81,6 +81,8 @@ export const zh = {
81
81
  onboardingRegistrationDescription: '创建或使用当前设备的 AWiki 身份,即可通过 AWiki 托管代理服务访问 DeepSeek 模型。',
82
82
  onboardingRestoreTitle: '恢复 AWiki 身份',
83
83
  onboardingRestoreDescription: '这台设备保留了一个已退出的 AWiki 身份。恢复后可以继续使用原账户。',
84
+ onboardingRecoveryRequiredTitle: '需要重新恢复 AWiki 身份',
85
+ onboardingRecoveryRequiredDescription: '当前设备的旧身份凭证已失效。验证原绑定手机号并恢复后,才能继续使用 AWiki 账户和托管模型。',
84
86
  onboardingRestore: '恢复身份',
85
87
  onboardingEnableTitle: '启用 AWiki 托管模型',
86
88
  onboardingBypassDescription: '当前为开发联调模式,可直接启用模型,不会扣减账户余额。',
@@ -91,6 +93,7 @@ export const zh = {
91
93
  identityLoading: '正在读取 AWiki 身份状态…',
92
94
  identitySignedOutRequired: '当前 AWiki 身份已退出。恢复这台设备保留的身份后,才能查看账户余额、充值和用量。',
93
95
  identityRegistrationRequired: '请先通过 AWiki 面板创建身份,再查看账户余额、充值和用量。',
96
+ identityRecoveryRequired: '当前设备的 AWiki 身份凭证已失效。请在 AWiki 面板验证绑定手机号并恢复身份后,再查看账户余额、充值和用量。',
94
97
  identityRestoring: '正在恢复…',
95
98
  domainLabel: '默认域名',
96
99
  domainDescription: '输入纯域名,不要包含协议、路径或端口。',
@@ -107,24 +110,24 @@ export const zh = {
107
110
  unavailable: '当前连接无法修改 Host 设置。请在运行 DeepSeek Harness 的本机打开此页面。',
108
111
  readOnly: '当前设置文件为只读。',
109
112
  dangerTitle: '危险区域',
110
- dangerDescription: '永久清除此安装中的 AWiki 身份与消息数据。此操作无法撤销。',
113
+ dangerDescription: '永久清除此安装中的 AWiki 凭证与消息数据。清除后需要重新验证绑定手机号才能恢复原身份。',
111
114
  clearLocalData: '清空本地 AWiki 数据',
112
115
  clearDialogTitle: '确认清空本地 AWiki 数据',
113
116
  clearDialogDescription: '这是不可恢复的危险操作。请确认你了解以下影响后再继续。',
114
117
  clearScope: '本地 DID、私钥、访问令牌、注册草稿、会话记录和附件索引都会被永久删除。',
115
- clearRemoteNotice: '服务端 AWiki 账号与 Handle 不会被删除;失去本地私钥后,本安装可能无法再使用原身份。',
118
+ clearRemoteNotice: '服务端 AWiki 账号与 Handle 不会被删除;之后可在 AWiki 面板使用完整 Handle、绑定手机号和验证码恢复原身份,但已清除的本地消息与附件索引不会恢复。',
116
119
  clearConfirmationLabel: '请输入“{phrase}”以确认:',
117
120
  clearConfirmationPhrase: '永久清空',
118
121
  clearConfirm: '永久清空',
119
122
  clearing: '正在清空…',
120
- clearSucceeded: '本地 AWiki 数据已清空,无法恢复。',
123
+ clearSucceeded: '本地 AWiki 数据已清空。原身份可通过 Handle 和绑定手机号恢复,已清除的本地数据无法恢复。',
121
124
  clearFailed: '未能清空本地 AWiki 数据,未完成删除。请重试。',
122
125
  cancel: '取消',
123
126
  };
124
127
  /** English dictionary. */
125
128
  export const en = {
126
129
  nav: 'AWiki',
127
- intro: 'Manage advanced AWiki identity settings.',
130
+ intro: 'Manage the AWiki-hosted DeepSeek account, usage, and advanced identity settings.',
128
131
  tabAccount: 'Account & Recharge',
129
132
  tabUsage: 'Usage',
130
133
  tabAdvanced: 'Advanced',
@@ -203,6 +206,8 @@ export const en = {
203
206
  onboardingRegistrationDescription: 'Create or use this device’s AWiki identity to access DeepSeek through AWiki’s hosted proxy service.',
204
207
  onboardingRestoreTitle: 'Restore AWiki identity',
205
208
  onboardingRestoreDescription: 'This device retains a signed-out AWiki identity. Restore it to continue using the existing account.',
209
+ onboardingRecoveryRequiredTitle: 'Recover the AWiki identity again',
210
+ onboardingRecoveryRequiredDescription: 'The previous identity credential on this device is no longer valid. Verify the bound phone and recover it before using the AWiki account or hosted models.',
206
211
  onboardingRestore: 'Restore identity',
207
212
  onboardingEnableTitle: 'Enable AWiki-hosted DeepSeek',
208
213
  onboardingBypassDescription: 'Development bypass is active, so models can be enabled without reducing the account balance.',
@@ -213,6 +218,7 @@ export const en = {
213
218
  identityLoading: 'Loading the AWiki identity…',
214
219
  identitySignedOutRequired: 'The AWiki identity is signed out. Restore the identity retained on this device to view the account, recharge, and usage.',
215
220
  identityRegistrationRequired: 'Create an identity from the AWiki panel before viewing the account, recharge, and usage.',
221
+ identityRecoveryRequired: 'The AWiki credential on this device is no longer valid. Recover the identity from the AWiki panel before viewing the account, recharge, and usage.',
216
222
  identityRestoring: 'Restoring…',
217
223
  domainLabel: 'Default domain',
218
224
  domainDescription: 'Enter a bare domain without a protocol, path, or port.',
@@ -229,17 +235,17 @@ export const en = {
229
235
  unavailable: 'This connection cannot edit Host settings. Open this page on the machine running DeepSeek Harness.',
230
236
  readOnly: 'The settings document is read-only.',
231
237
  dangerTitle: 'Danger zone',
232
- dangerDescription: 'Permanently clear the AWiki identity and message data stored by this installation. This cannot be undone.',
238
+ dangerDescription: 'Permanently clear the AWiki credentials and message data stored by this installation. Restoring the identity will require phone verification.',
233
239
  clearLocalData: 'Clear local AWiki data',
234
240
  clearDialogTitle: 'Clear local AWiki data?',
235
241
  clearDialogDescription: 'This is an irreversible operation. Confirm that you understand the impact before continuing.',
236
242
  clearScope: 'The local DID, private keys, access token, registration draft, conversations, and attachment index will be permanently deleted.',
237
- clearRemoteNotice: 'The server-side AWiki account and Handle are not deleted. Without the local private key, this installation may lose access to the original identity.',
243
+ clearRemoteNotice: 'The server-side AWiki account and Handle are not deleted. You can restore the original identity from the AWiki panel with its full Handle, bound phone number, and verification code, but cleared local messages and attachment indexes cannot be restored.',
238
244
  clearConfirmationLabel: 'Type “{phrase}” to confirm:',
239
245
  clearConfirmationPhrase: 'PERMANENTLY CLEAR',
240
246
  clearConfirm: 'Clear permanently',
241
247
  clearing: 'Clearing…',
242
- clearSucceeded: 'Local AWiki data was cleared and cannot be recovered.',
248
+ clearSucceeded: 'Local AWiki data was cleared. The identity can be restored with its Handle and bound phone number, but the cleared local data cannot be recovered.',
243
249
  clearFailed: 'Local AWiki data could not be cleared. Deletion did not complete. Try again.',
244
250
  cancel: 'Cancel',
245
251
  };
@@ -1 +1 @@
1
- {"version":3,"file":"settings-locales.js","sourceRoot":"","sources":["../../../src/client/settings-locales.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings-locales.js","sourceRoot":"","sources":["../../../src/client/settings-locales.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  /** Composed props and injected browser operations for the AWiki overlay. */
2
2
  import type { HostObservable, InjectFace, PropsRuntime, PropsStore } from '@deepseek-ai/dsh-client-ui-slots';
3
- import type { AwikiAttachmentId, AwikiConversationId, AwikiCreateGroupResult, AwikiDownloadedAttachment, AwikiIdentity, AwikiMessageId, AwikiMailAccount, AwikiMailInboxPage, AwikiMailInboxRequest, AwikiMailMarkReadRequest, AwikiMailMarkReadResult, AwikiMailMessage, AwikiMailReadRequest, AwikiMailSendRequest, AwikiMailSendResult, AwikiRegistrationOtpRequest, AwikiRegistrationOtpResult, AwikiRegistrationRequest, AwikiConversationSummary, AwikiSession } from '@awiki/dsh-plugin/types';
3
+ import type { AwikiAttachmentId, AwikiConversationId, AwikiCreateGroupResult, AwikiDownloadedAttachment, AwikiIdentityAccessInspection, AwikiIdentityAccessInspectionRequest, AwikiIdentity, AwikiGroupMember, AwikiGroupMemberRecord, AwikiGroupRebindRecoverySummary, AwikiGroupSnapshot, AwikiMessageId, AwikiMailAccount, AwikiMailInboxPage, AwikiMailInboxRequest, AwikiMailMarkReadRequest, AwikiMailMarkReadResult, AwikiMailMessage, AwikiMailReadRequest, AwikiMailSendRequest, AwikiMailSendResult, AwikiRegistrationOtpRequest, AwikiRegistrationOtpResult, AwikiRegistrationRequest, AwikiProfile, AwikiRecoveryOtpRequest, AwikiRecoveryOtpResult, AwikiRecoveryPrepareRequest, AwikiRecoveryProgress, AwikiConversationSummary, AwikiSession, AwikiUpdateProfileRequest, AwikiMention } from '@awiki/dsh-plugin/types';
4
4
  import type { AwikiActionResult, AwikiView } from './controller.ts';
5
5
  import type { createAwikiOverlayStore } from './store.ts';
6
6
  /** Injected browser actions; components never receive Cordis ctx or Remote. */
@@ -13,6 +13,8 @@ export interface AwikiInjected {
13
13
  open: () => Promise<AwikiActionResult>;
14
14
  /** Stop polling and invalidate work when the overlay is unmounted. */
15
15
  close: () => void;
16
+ /** Determine whether one Handle should use registration or Recovery V4. */
17
+ inspectIdentityAccess: (request: AwikiIdentityAccessInspectionRequest) => Promise<AwikiActionResult<AwikiIdentityAccessInspection>>;
16
18
  /**
17
19
  * Request a registration verification code.
18
20
  * @param request - desired Handle and verification phone number.
@@ -25,8 +27,23 @@ export interface AwikiInjected {
25
27
  registerIdentity: (request: AwikiRegistrationRequest) => Promise<AwikiActionResult<AwikiIdentity>>;
26
28
  /** Update the deployment identity's public WNS display name. */
27
29
  updateDisplayName: (displayName: string) => Promise<AwikiActionResult<AwikiIdentity>>;
30
+ updateProfile: (request: AwikiUpdateProfileRequest) => Promise<AwikiActionResult<AwikiProfile>>;
31
+ sendRecoveryOtp: (request: AwikiRecoveryOtpRequest) => Promise<AwikiActionResult<AwikiRecoveryOtpResult>>;
32
+ prepareRecovery: (request: Omit<AwikiRecoveryPrepareRequest, 'operationId'>) => Promise<AwikiActionResult<AwikiRecoveryProgress>>;
33
+ activateRecovery: () => Promise<AwikiActionResult<AwikiRecoveryProgress>>;
34
+ refreshRecoveryStatus: () => Promise<AwikiActionResult<AwikiRecoveryProgress>>;
35
+ resumeRecovery: () => Promise<AwikiActionResult<AwikiRecoveryProgress>>;
36
+ discardRecovery: () => Promise<AwikiActionResult>;
28
37
  /** Load the next conversation page with the Host-owned cursor. */
29
38
  loadMoreConversations: () => Promise<AwikiActionResult>;
39
+ /** Retry Core-owned migration for old groups restored after Handle recovery. */
40
+ retryGroupRebindRecovery: () => Promise<AwikiActionResult<AwikiGroupRebindRecoverySummary>>;
41
+ /** Hide only the current recovery-summary revision. */
42
+ dismissGroupRecoveryNotice: () => Promise<AwikiActionResult>;
43
+ /** Remove one conversation from this installation's recent roster. */
44
+ hideConversation: (conversationId: AwikiConversationId) => Promise<AwikiActionResult>;
45
+ /** Restore one locally hidden conversation. */
46
+ restoreConversation: (conversationId: AwikiConversationId) => Promise<AwikiActionResult>;
30
47
  /**
31
48
  * Open an existing direct conversation or a local draft for one Handle.
32
49
  * @param handle - peer Handle or DID typed by the user.
@@ -34,6 +51,12 @@ export interface AwikiInjected {
34
51
  startDirectChat: (handle: string) => Promise<AwikiActionResult>;
35
52
  /** Create a group with initial members and open its canonical conversation. */
36
53
  createGroup: (name: string, members: readonly string[]) => Promise<AwikiActionResult<AwikiCreateGroupResult>>;
54
+ joinGroup: (groupDid: string) => Promise<AwikiActionResult<AwikiGroupSnapshot>>;
55
+ refreshSelectedGroup: () => Promise<AwikiActionResult>;
56
+ loadMoreGroupMembers: () => Promise<AwikiActionResult>;
57
+ addSelectedGroupMember: (member: string) => Promise<AwikiActionResult<AwikiGroupMember>>;
58
+ removeSelectedGroupMember: (member: AwikiGroupMemberRecord) => Promise<AwikiActionResult<AwikiGroupMember>>;
59
+ leaveSelectedGroup: () => Promise<AwikiActionResult>;
37
60
  /**
38
61
  * Select one conversation or return to the roster.
39
62
  * @param conversationId - conversation identifier, or `null` for the roster.
@@ -51,7 +74,7 @@ export interface AwikiInjected {
51
74
  * Send text to the selected conversation.
52
75
  * @param text - non-empty composer text.
53
76
  */
54
- sendText: (text: string, clientMessageId?: AwikiMessageId) => Promise<AwikiActionResult>;
77
+ sendText: (text: string, clientMessageId?: AwikiMessageId, mentions?: readonly AwikiMention[]) => Promise<AwikiActionResult>;
55
78
  /**
56
79
  * Send one JSON-safe file payload to the selected conversation.
57
80
  * @param file - file metadata, base64 bytes, and an optional caption.
@@ -73,6 +96,8 @@ export interface AwikiInjected {
73
96
  logout: () => Promise<AwikiActionResult<AwikiSession>>;
74
97
  /** Resume the same locally preserved identity. */
75
98
  login: () => Promise<AwikiActionResult<AwikiSession>>;
99
+ /** Clear the preserved local identity only after the component's destructive confirmation. */
100
+ clearLocalIdentity: () => Promise<AwikiActionResult>;
76
101
  /** Read the current deployment mailbox account on demand. */
77
102
  getMailAccount: () => Promise<AwikiActionResult<AwikiMailAccount>>;
78
103
  /** List one bounded mailbox page on demand. */
@@ -1 +1 @@
1
- {"version":3,"file":"slots.d.ts","sourceRoot":"","sources":["../../../src/client/slots.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slots.d.ts","sourceRoot":"","sources":["../../../src/client/slots.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { AwikiConversationPreferenceMutation, AwikiConversationPreferences, AwikiDid } from './types.ts';
2
+ /** Validate one browser mutation before entering private Host persistence. */
3
+ export declare function normalizeConversationPreferenceMutation(value: unknown): AwikiConversationPreferenceMutation | undefined;
4
+ /** Atomic identity-scoped product preferences, independent of Core membership and history. */
5
+ export declare class AwikiConversationPreferenceStore {
6
+ private readonly hostDirectory;
7
+ private readonly directory;
8
+ private mutation;
9
+ constructor(stateRoot: string);
10
+ get(ownerDid: AwikiDid): Promise<AwikiConversationPreferences>;
11
+ update(ownerDid: AwikiDid, request: AwikiConversationPreferenceMutation): Promise<AwikiConversationPreferences>;
12
+ clear(): Promise<void>;
13
+ private load;
14
+ private write;
15
+ private ensureDirectory;
16
+ private hasDirectory;
17
+ private path;
18
+ private key;
19
+ }
20
+ //# sourceMappingURL=conversation-preferences.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-preferences.d.ts","sourceRoot":"","sources":["../../src/conversation-preferences.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAGV,mCAAmC,EACnC,4BAA4B,EAC5B,QAAQ,EAGT,MAAM,YAAY,CAAA;AAyInB,8EAA8E;AAC9E,wBAAgB,uCAAuC,CACrD,KAAK,EAAE,OAAO,GACb,mCAAmC,GAAG,SAAS,CAoBjD;AAED,8FAA8F;AAC9F,qBAAa,gCAAgC;IAC3C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAmC;gBAEhC,SAAS,EAAE,MAAM;IAKvB,GAAG,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,4BAA4B,CAAC;IAKpE,MAAM,CACX,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,mCAAmC,GAC3C,OAAO,CAAC,4BAA4B,CAAC;IAsC3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAerB,IAAI;YAkBJ,KAAK;YAgBL,eAAe;YAWf,YAAY;IAW1B,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,GAAG;CAGZ"}
@@ -0,0 +1,294 @@
1
+ import { createHash, randomUUID } from 'node:crypto';
2
+ import { chmod, lstat, mkdir, readFile, rm, rename, unlink, writeFile } from 'node:fs/promises';
3
+ import { join } from 'node:path';
4
+ const STORE_VERSION = 1;
5
+ const STORE_DIRECTORY = 'conversation-preferences';
6
+ const MAX_STORE_BYTES = 2 * 1024 * 1024;
7
+ const MAX_HIDDEN_CONVERSATIONS = 500;
8
+ const MAX_IDENTIFIER_CHARACTERS = 2_048;
9
+ const MAX_TITLE_CHARACTERS = 1_024;
10
+ const MAX_PREVIEW_CHARACTERS = 4_096;
11
+ const MAX_HANDLE_CHARACTERS = 512;
12
+ const MAX_RECOVERY_SIGNATURE_CHARACTERS = 128;
13
+ function invalidState() {
14
+ throw new TypeError('awiki: conversation preferences are invalid');
15
+ }
16
+ function isMissing(error) {
17
+ return typeof error === 'object' && error !== null && 'code' in error && error.code === 'ENOENT';
18
+ }
19
+ function isFileExists(error) {
20
+ return typeof error === 'object' && error !== null && 'code' in error && error.code === 'EEXIST';
21
+ }
22
+ function isRecord(value) {
23
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
24
+ }
25
+ function boundedString(value, maximum) {
26
+ if (typeof value !== 'string' || value.length === 0 || value.length > maximum * 2)
27
+ invalidState();
28
+ if (Array.from(value).length > maximum)
29
+ invalidState();
30
+ return value;
31
+ }
32
+ function optionalString(value, maximum) {
33
+ return value === undefined ? undefined : boundedString(value, maximum);
34
+ }
35
+ function optionalCount(value) {
36
+ if (value === undefined)
37
+ return undefined;
38
+ if (!Number.isSafeInteger(value) || value < 0 || value > 0xffff_ffff)
39
+ invalidState();
40
+ return value;
41
+ }
42
+ function optionalTimestamp(value) {
43
+ if (value === undefined)
44
+ return undefined;
45
+ if (!Number.isSafeInteger(value) || value < 0)
46
+ invalidState();
47
+ return value;
48
+ }
49
+ /** Rebuild a bounded display-only snapshot before it reaches private persistence. */
50
+ function conversation(value) {
51
+ if (!isRecord(value))
52
+ invalidState();
53
+ const kind = value.kind;
54
+ const id = boundedString(value.id, MAX_IDENTIFIER_CHARACTERS);
55
+ const title = boundedString(value.title, MAX_TITLE_CHARACTERS);
56
+ const unreadCount = optionalCount(value.unreadCount);
57
+ const lastMessageAt = optionalTimestamp(value.lastMessageAt);
58
+ const lastMessagePreview = optionalString(value.lastMessagePreview, MAX_PREVIEW_CHARACTERS);
59
+ const common = {
60
+ id,
61
+ title,
62
+ ...(unreadCount === undefined ? {} : { unreadCount }),
63
+ ...(lastMessageAt === undefined ? {} : { lastMessageAt }),
64
+ ...(lastMessagePreview === undefined ? {} : { lastMessagePreview }),
65
+ };
66
+ if (kind === 'direct') {
67
+ const peerDid = boundedString(value.peerDid, MAX_IDENTIFIER_CHARACTERS);
68
+ if (!peerDid.startsWith('did:'))
69
+ invalidState();
70
+ const peerHandle = optionalString(value.peerHandle, MAX_HANDLE_CHARACTERS);
71
+ const displayName = optionalString(value.displayName, MAX_TITLE_CHARACTERS);
72
+ return {
73
+ kind,
74
+ ...common,
75
+ peerDid: peerDid,
76
+ ...(peerHandle === undefined ? {} : { peerHandle: peerHandle }),
77
+ ...(displayName === undefined ? {} : { displayName }),
78
+ };
79
+ }
80
+ if (kind === 'group') {
81
+ const groupDid = boundedString(value.groupDid, MAX_IDENTIFIER_CHARACTERS);
82
+ if (!groupDid.startsWith('did:'))
83
+ invalidState();
84
+ return { kind, ...common, groupDid: groupDid };
85
+ }
86
+ invalidState();
87
+ }
88
+ function hiddenPreference(value) {
89
+ if (!isRecord(value) || !Number.isSafeInteger(value.hiddenAt) || value.hiddenAt < 0)
90
+ invalidState();
91
+ return { conversation: conversation(value.conversation), hiddenAt: value.hiddenAt };
92
+ }
93
+ function preferences(value, expectedOwnerDid) {
94
+ if (!isRecord(value)
95
+ || value.version !== STORE_VERSION
96
+ || value.ownerDid !== String(expectedOwnerDid)
97
+ || !Array.isArray(value.hiddenConversations)
98
+ || value.hiddenConversations.length > MAX_HIDDEN_CONVERSATIONS)
99
+ invalidState();
100
+ const hiddenConversations = value.hiddenConversations.map(hiddenPreference);
101
+ const seen = new Set();
102
+ for (const hidden of hiddenConversations) {
103
+ if (seen.has(hidden.conversation.id))
104
+ invalidState();
105
+ seen.add(hidden.conversation.id);
106
+ }
107
+ const dismissedGroupRecoverySignature = optionalString(value.dismissedGroupRecoverySignature, MAX_RECOVERY_SIGNATURE_CHARACTERS);
108
+ return {
109
+ version: STORE_VERSION,
110
+ ownerDid: String(expectedOwnerDid),
111
+ hiddenConversations,
112
+ ...(dismissedGroupRecoverySignature === undefined ? {} : { dismissedGroupRecoverySignature }),
113
+ };
114
+ }
115
+ function publicPreferences(value) {
116
+ return {
117
+ hiddenConversations: value.hiddenConversations.map(hidden => ({
118
+ conversation: { ...hidden.conversation },
119
+ hiddenAt: hidden.hiddenAt,
120
+ })),
121
+ ...(value.dismissedGroupRecoverySignature === undefined
122
+ ? {}
123
+ : { dismissedGroupRecoverySignature: value.dismissedGroupRecoverySignature }),
124
+ };
125
+ }
126
+ function emptyPreferences(ownerDid) {
127
+ return { version: STORE_VERSION, ownerDid: String(ownerDid), hiddenConversations: [] };
128
+ }
129
+ /** Validate one browser mutation before entering private Host persistence. */
130
+ export function normalizeConversationPreferenceMutation(value) {
131
+ try {
132
+ if (!isRecord(value))
133
+ return undefined;
134
+ if (value.action === 'hide')
135
+ return { action: 'hide', conversation: conversation(value.conversation) };
136
+ if (value.action === 'restore') {
137
+ return {
138
+ action: 'restore',
139
+ conversationId: boundedString(value.conversationId, MAX_IDENTIFIER_CHARACTERS),
140
+ };
141
+ }
142
+ if (value.action === 'dismiss-group-recovery') {
143
+ return {
144
+ action: 'dismiss-group-recovery',
145
+ signature: boundedString(value.signature, MAX_RECOVERY_SIGNATURE_CHARACTERS),
146
+ };
147
+ }
148
+ }
149
+ catch {
150
+ return undefined;
151
+ }
152
+ return undefined;
153
+ }
154
+ /** Atomic identity-scoped product preferences, independent of Core membership and history. */
155
+ export class AwikiConversationPreferenceStore {
156
+ hostDirectory;
157
+ directory;
158
+ mutation = Promise.resolve();
159
+ constructor(stateRoot) {
160
+ this.hostDirectory = join(stateRoot, '.host');
161
+ this.directory = join(this.hostDirectory, STORE_DIRECTORY);
162
+ }
163
+ async get(ownerDid) {
164
+ await this.mutation;
165
+ return publicPreferences(await this.load(ownerDid));
166
+ }
167
+ update(ownerDid, request) {
168
+ const mutate = async () => {
169
+ const normalized = normalizeConversationPreferenceMutation(request);
170
+ if (normalized === undefined)
171
+ invalidState();
172
+ const current = await this.load(ownerDid);
173
+ let next;
174
+ switch (normalized.action) {
175
+ case 'hide': {
176
+ const snapshot = normalized.conversation;
177
+ const hidden = current.hiddenConversations.filter(item => item.conversation.id !== snapshot.id);
178
+ hidden.unshift({ conversation: snapshot, hiddenAt: Date.now() });
179
+ next = { ...current, hiddenConversations: hidden.slice(0, MAX_HIDDEN_CONVERSATIONS) };
180
+ break;
181
+ }
182
+ case 'restore': {
183
+ const conversationId = normalized.conversationId;
184
+ next = {
185
+ ...current,
186
+ hiddenConversations: current.hiddenConversations.filter(item => item.conversation.id !== conversationId),
187
+ };
188
+ break;
189
+ }
190
+ case 'dismiss-group-recovery': {
191
+ const signature = normalized.signature;
192
+ next = { ...current, dismissedGroupRecoverySignature: signature };
193
+ break;
194
+ }
195
+ default:
196
+ invalidState();
197
+ }
198
+ await this.write(ownerDid, next);
199
+ return publicPreferences(next);
200
+ };
201
+ const pending = this.mutation.then(mutate, mutate);
202
+ this.mutation = pending.then(() => undefined, () => undefined);
203
+ return pending;
204
+ }
205
+ async clear() {
206
+ await this.mutation;
207
+ try {
208
+ if (!(await this.hasDirectory(this.hostDirectory)))
209
+ return;
210
+ const metadata = await lstat(this.directory);
211
+ if (metadata.isSymbolicLink() || !metadata.isDirectory()) {
212
+ await unlink(this.directory);
213
+ return;
214
+ }
215
+ await rm(this.directory, { recursive: true, force: true });
216
+ }
217
+ catch (error) {
218
+ if (!isMissing(error))
219
+ throw error;
220
+ }
221
+ }
222
+ async load(ownerDid) {
223
+ if (!(await this.hasDirectory(this.hostDirectory)) || !(await this.hasDirectory(this.directory))) {
224
+ return emptyPreferences(ownerDid);
225
+ }
226
+ const path = this.path(ownerDid);
227
+ try {
228
+ const metadata = await lstat(path);
229
+ if (!metadata.isFile() || metadata.isSymbolicLink() || metadata.size > MAX_STORE_BYTES)
230
+ invalidState();
231
+ const text = await readFile(path, 'utf8');
232
+ if (Buffer.byteLength(text, 'utf8') > MAX_STORE_BYTES)
233
+ invalidState();
234
+ return preferences(JSON.parse(text), ownerDid);
235
+ }
236
+ catch (error) {
237
+ if (isMissing(error))
238
+ return emptyPreferences(ownerDid);
239
+ if (error instanceof SyntaxError)
240
+ invalidState();
241
+ throw error;
242
+ }
243
+ }
244
+ async write(ownerDid, value) {
245
+ const snapshot = preferences(value, ownerDid);
246
+ const text = `${JSON.stringify(snapshot)}\n`;
247
+ if (Buffer.byteLength(text, 'utf8') > MAX_STORE_BYTES)
248
+ invalidState();
249
+ await this.ensureDirectory();
250
+ const path = this.path(ownerDid);
251
+ const temporary = join(this.directory, `.${this.key(ownerDid)}.${randomUUID()}.tmp`);
252
+ try {
253
+ await writeFile(temporary, text, { flag: 'wx', mode: 0o600 });
254
+ await rename(temporary, path);
255
+ await chmod(path, 0o600);
256
+ }
257
+ finally {
258
+ await unlink(temporary).catch(() => undefined);
259
+ }
260
+ }
261
+ async ensureDirectory() {
262
+ await mkdir(this.hostDirectory, { recursive: true, mode: 0o700 });
263
+ if (!(await this.hasDirectory(this.hostDirectory)))
264
+ invalidState();
265
+ await chmod(this.hostDirectory, 0o700);
266
+ await mkdir(this.directory, { mode: 0o700 }).catch((error) => {
267
+ if (!isFileExists(error))
268
+ throw error;
269
+ });
270
+ if (!(await this.hasDirectory(this.directory)))
271
+ invalidState();
272
+ await chmod(this.directory, 0o700);
273
+ }
274
+ async hasDirectory(path) {
275
+ try {
276
+ const metadata = await lstat(path);
277
+ if (!metadata.isDirectory() || metadata.isSymbolicLink())
278
+ invalidState();
279
+ return true;
280
+ }
281
+ catch (error) {
282
+ if (isMissing(error))
283
+ return false;
284
+ throw error;
285
+ }
286
+ }
287
+ path(ownerDid) {
288
+ return join(this.directory, `${this.key(ownerDid)}.json`);
289
+ }
290
+ key(ownerDid) {
291
+ return createHash('sha256').update(String(ownerDid)).digest('hex');
292
+ }
293
+ }
294
+ //# sourceMappingURL=conversation-preferences.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-preferences.js","sourceRoot":"","sources":["../../src/conversation-preferences.ts"],"names":[],"mappings":"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"}