@cats-inc/cats-platform 0.1.9 → 0.1.21

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 (163) hide show
  1. package/.env.example +7 -10
  2. package/build/desktop/bootstrapPage.d.ts.map +1 -1
  3. package/build/desktop/bootstrapPage.js +162 -55
  4. package/build/desktop/bootstrapPage.js.map +1 -1
  5. package/build/desktop/cliInventoryProbe.d.ts +18 -0
  6. package/build/desktop/cliInventoryProbe.d.ts.map +1 -1
  7. package/build/desktop/cliInventoryProbe.js +42 -0
  8. package/build/desktop/cliInventoryProbe.js.map +1 -1
  9. package/build/desktop/contracts.d.ts +9 -0
  10. package/build/desktop/contracts.d.ts.map +1 -1
  11. package/build/desktop/main.js +101 -20
  12. package/build/desktop/main.js.map +1 -1
  13. package/build/desktop/readiness.d.ts.map +1 -1
  14. package/build/desktop/readiness.js +35 -2
  15. package/build/desktop/readiness.js.map +1 -1
  16. package/build/desktop/tray.d.ts +1 -1
  17. package/build/desktop/tray.d.ts.map +1 -1
  18. package/build/desktop/tray.js +2 -7
  19. package/build/desktop/tray.js.map +1 -1
  20. package/build/desktop/trayMenu.d.ts +23 -2
  21. package/build/desktop/trayMenu.d.ts.map +1 -1
  22. package/build/desktop/trayMenu.js +24 -30
  23. package/build/desktop/trayMenu.js.map +1 -1
  24. package/build/desktop/updateDialog.d.ts +40 -0
  25. package/build/desktop/updateDialog.d.ts.map +1 -0
  26. package/build/desktop/updateDialog.js +178 -0
  27. package/build/desktop/updateDialog.js.map +1 -0
  28. package/build/desktop/updateNotifications.js +2 -2
  29. package/build/desktop/updateNotifications.js.map +1 -1
  30. package/build/desktop/updaterAdapter.d.ts +1 -0
  31. package/build/desktop/updaterAdapter.d.ts.map +1 -1
  32. package/build/desktop/updaterAdapter.js +13 -1
  33. package/build/desktop/updaterAdapter.js.map +1 -1
  34. package/build/renderer/assets/{ActiveSessionPermissionChip-Dl2UOFgh.js → ActiveSessionPermissionChip-DImsuR9T.js} +1 -1
  35. package/build/renderer/assets/{App-CPqGDXVi.js → App-BfOvMP2m.js} +1 -1
  36. package/build/renderer/assets/{App-ChvP0G9X.js → App-DKOSn0o_.js} +1 -1
  37. package/build/renderer/assets/{App-C57f4p8k.js → App-DWd7I3Z2.js} +1 -1
  38. package/build/renderer/assets/{WorkspaceAppRoutes-DYg2vnjz.js → WorkspaceAppRoutes-CrbTA9En.js} +1 -1
  39. package/build/renderer/assets/app-BTww3Hl4.js +43 -0
  40. package/build/renderer/assets/{app-XnXwkcD2.css → app-CPxWQwLA.css} +1 -1
  41. package/build/renderer/assets/conversationSidebarRecentEntries-QuaOPxCb.js +6 -0
  42. package/build/renderer/assets/{useDraftSessionChips-By3XXabI.js → useDraftSessionChips-DCIId0eY.js} +1 -1
  43. package/build/renderer/index.html +2 -2
  44. package/build/server/app/renderer/auth/api.d.ts +28 -2
  45. package/build/server/app/renderer/auth/api.d.ts.map +1 -1
  46. package/build/server/app/renderer/auth/api.js +29 -4
  47. package/build/server/app/renderer/auth/api.js.map +1 -1
  48. package/build/server/app/renderer/settings/settingsDesktopUpdateLabels.d.ts +11 -4
  49. package/build/server/app/renderer/settings/settingsDesktopUpdateLabels.d.ts.map +1 -1
  50. package/build/server/app/renderer/settings/settingsDesktopUpdateLabels.js +25 -5
  51. package/build/server/app/renderer/settings/settingsDesktopUpdateLabels.js.map +1 -1
  52. package/build/server/app/server/authGatePolicy.js +1 -2
  53. package/build/server/app/server/authGatePolicy.js.map +1 -1
  54. package/build/server/app/server/authRoutes.d.ts +14 -1
  55. package/build/server/app/server/authRoutes.d.ts.map +1 -1
  56. package/build/server/app/server/authRoutes.js +395 -76
  57. package/build/server/app/server/authRoutes.js.map +1 -1
  58. package/build/server/app/server/contracts.d.ts +4 -1
  59. package/build/server/app/server/contracts.d.ts.map +1 -1
  60. package/build/server/app/server/dependencies.d.ts.map +1 -1
  61. package/build/server/app/server/dependencies.js +6 -1
  62. package/build/server/app/server/dependencies.js.map +1 -1
  63. package/build/server/app/server/platformSetupRoutes.d.ts +2 -1
  64. package/build/server/app/server/platformSetupRoutes.d.ts.map +1 -1
  65. package/build/server/app/server/platformSetupRoutes.js +129 -64
  66. package/build/server/app/server/platformSetupRoutes.js.map +1 -1
  67. package/build/server/app/server/requestRouter.d.ts.map +1 -1
  68. package/build/server/app/server/requestRouter.js +3 -0
  69. package/build/server/app/server/requestRouter.js.map +1 -1
  70. package/build/server/app/server/runtimeSurfaceProxy.d.ts.map +1 -1
  71. package/build/server/app/server/runtimeSurfaceProxy.js +12 -17
  72. package/build/server/app/server/runtimeSurfaceProxy.js.map +1 -1
  73. package/build/server/config.d.ts +1 -3
  74. package/build/server/config.d.ts.map +1 -1
  75. package/build/server/config.js +2 -13
  76. package/build/server/config.js.map +1 -1
  77. package/build/server/design/components/providerModelFieldsSupport.d.ts.map +1 -1
  78. package/build/server/design/components/providerModelFieldsSupport.js +4 -1
  79. package/build/server/design/components/providerModelFieldsSupport.js.map +1 -1
  80. package/build/server/design/components/useProviderTargetReconciliation.d.ts.map +1 -1
  81. package/build/server/design/components/useProviderTargetReconciliation.js +3 -1
  82. package/build/server/design/components/useProviderTargetReconciliation.js.map +1 -1
  83. package/build/server/platform/auth/actionGrant.d.ts +61 -0
  84. package/build/server/platform/auth/actionGrant.d.ts.map +1 -0
  85. package/build/server/platform/auth/actionGrant.js +108 -0
  86. package/build/server/platform/auth/actionGrant.js.map +1 -0
  87. package/build/server/platform/auth/adminCredentials.d.ts +37 -0
  88. package/build/server/platform/auth/adminCredentials.d.ts.map +1 -0
  89. package/build/server/platform/auth/adminCredentials.js +63 -0
  90. package/build/server/platform/auth/adminCredentials.js.map +1 -0
  91. package/build/server/platform/auth/bootstrap.d.ts +14 -0
  92. package/build/server/platform/auth/bootstrap.d.ts.map +1 -1
  93. package/build/server/platform/auth/bootstrap.js +29 -4
  94. package/build/server/platform/auth/bootstrap.js.map +1 -1
  95. package/build/server/platform/auth/config.d.ts.map +1 -1
  96. package/build/server/platform/auth/config.js +1 -1
  97. package/build/server/platform/auth/config.js.map +1 -1
  98. package/build/server/platform/auth/errorCodes.d.ts +2 -0
  99. package/build/server/platform/auth/errorCodes.d.ts.map +1 -1
  100. package/build/server/platform/auth/errorCodes.js +2 -0
  101. package/build/server/platform/auth/errorCodes.js.map +1 -1
  102. package/build/server/platform/auth/googleAccount.d.ts +40 -13
  103. package/build/server/platform/auth/googleAccount.d.ts.map +1 -1
  104. package/build/server/platform/auth/googleAccount.js +89 -70
  105. package/build/server/platform/auth/googleAccount.js.map +1 -1
  106. package/build/server/platform/auth/index.d.ts +4 -0
  107. package/build/server/platform/auth/index.d.ts.map +1 -1
  108. package/build/server/platform/auth/index.js +4 -0
  109. package/build/server/platform/auth/index.js.map +1 -1
  110. package/build/server/platform/auth/localLogin.d.ts +10 -0
  111. package/build/server/platform/auth/localLogin.d.ts.map +1 -1
  112. package/build/server/platform/auth/localLogin.js +17 -0
  113. package/build/server/platform/auth/localLogin.js.map +1 -1
  114. package/build/server/platform/auth/loginMethods.d.ts +18 -0
  115. package/build/server/platform/auth/loginMethods.d.ts.map +1 -0
  116. package/build/server/platform/auth/loginMethods.js +19 -0
  117. package/build/server/platform/auth/loginMethods.js.map +1 -0
  118. package/build/server/platform/auth/securityEvents.d.ts +31 -0
  119. package/build/server/platform/auth/securityEvents.d.ts.map +1 -0
  120. package/build/server/platform/auth/securityEvents.js +45 -0
  121. package/build/server/platform/auth/securityEvents.js.map +1 -0
  122. package/build/server/products/chat/api/contracts.d.ts +0 -8
  123. package/build/server/products/chat/api/contracts.d.ts.map +1 -1
  124. package/build/server/products/chat/api/setupRoutes.d.ts.map +1 -1
  125. package/build/server/products/chat/api/setupRoutes.js +2 -84
  126. package/build/server/products/chat/api/setupRoutes.js.map +1 -1
  127. package/build/server/products/shared/api/workspaceContracts.d.ts +0 -8
  128. package/build/server/products/shared/api/workspaceContracts.d.ts.map +1 -1
  129. package/build/server/runtime/client.d.ts +11 -0
  130. package/build/server/runtime/client.d.ts.map +1 -1
  131. package/build/server/runtime/client.js +23 -1
  132. package/build/server/runtime/client.js.map +1 -1
  133. package/build/server/shared/i18n/catalogs/en.d.ts.map +1 -1
  134. package/build/server/shared/i18n/catalogs/en.js +40 -0
  135. package/build/server/shared/i18n/catalogs/en.js.map +1 -1
  136. package/build/server/shared/i18n/catalogs/zh-TW.d.ts.map +1 -1
  137. package/build/server/shared/i18n/catalogs/zh-TW.js +39 -0
  138. package/build/server/shared/i18n/catalogs/zh-TW.js.map +1 -1
  139. package/build/server/shared/i18n/index.d.ts +39 -0
  140. package/build/server/shared/i18n/index.d.ts.map +1 -1
  141. package/build/server/shared/i18n/messageKeys.d.ts +39 -0
  142. package/build/server/shared/i18n/messageKeys.d.ts.map +1 -1
  143. package/build/server/shared/i18n/messageKeys.js +39 -0
  144. package/build/server/shared/i18n/messageKeys.js.map +1 -1
  145. package/build/server/shared/providerCatalog.d.ts +3 -2
  146. package/build/server/shared/providerCatalog.d.ts.map +1 -1
  147. package/build/server/shared/providerCatalog.js +9 -1
  148. package/build/server/shared/providerCatalog.js.map +1 -1
  149. package/build/server/shared/providerCatalogData.d.ts +11 -1
  150. package/build/server/shared/providerCatalogData.d.ts.map +1 -1
  151. package/build/server/shared/providerCatalogData.js +9 -0
  152. package/build/server/shared/providerCatalogData.js.map +1 -1
  153. package/build/server/shared/providerCatalogInstances.d.ts.map +1 -1
  154. package/build/server/shared/providerCatalogInstances.js +3 -0
  155. package/build/server/shared/providerCatalogInstances.js.map +1 -1
  156. package/package.json +1 -1
  157. package/scripts/README.md +30 -0
  158. package/scripts/linux/node-cli-common.sh +2 -75
  159. package/scripts/macos/node-cli-common.sh +2 -75
  160. package/scripts/windows/Check-WindowsSetupReadiness.ps1 +14 -443
  161. package/scripts/windows/Remove-MergedBranches.ps1 +229 -0
  162. package/build/renderer/assets/app-DVN9Ghrk.js +0 -43
  163. package/build/renderer/assets/conversationSidebarRecentEntries-XZVCnMLw.js +0 -6
@@ -1,58 +1,13 @@
1
1
  import { randomUUID } from 'node:crypto';
2
- import { issueBrowserSession } from './session.js';
3
- export function createFirstAdminGoogleAuthState(input) {
4
- if (input.state.accounts.length > 0) {
5
- throw new Error('First admin already exists.');
6
- }
7
- const now = input.now ?? new Date();
8
- const nowIso = now.toISOString();
9
- const accountId = `auth-account-${randomUUID()}`;
10
- const account = {
11
- id: accountId,
12
- displayName: input.identity.displayName ?? input.identity.email,
13
- email: input.identity.email,
14
- avatarUrl: input.identity.avatarUrl,
15
- status: 'active',
16
- createdAt: nowIso,
17
- updatedAt: nowIso,
18
- };
19
- const providerIdentity = {
20
- id: `auth-identity-${randomUUID()}`,
21
- accountId,
22
- provider: 'google',
23
- providerSubject: input.identity.providerSubject,
24
- email: input.identity.email,
25
- createdAt: nowIso,
26
- updatedAt: nowIso,
27
- };
28
- const membership = {
29
- id: `auth-membership-${randomUUID()}`,
30
- accountId,
31
- roles: ['owner', 'admin'],
32
- coreActorId: 'actor-owner',
33
- createdAt: nowIso,
34
- updatedAt: nowIso,
35
- };
36
- const session = issueBrowserSession({
37
- accountId,
38
- sessionSecret: input.sessionSecret,
39
- ttlMs: input.sessionTtlMs,
40
- now,
41
- });
42
- return {
43
- state: {
44
- ...input.state,
45
- updatedAt: nowIso,
46
- accounts: [account],
47
- identities: [providerIdentity],
48
- memberships: [membership],
49
- sessions: [session.session],
50
- },
51
- account,
52
- identity: providerIdentity,
53
- membership,
54
- session,
55
- };
2
+ import { issueBrowserSession, revokeSession, } from './session.js';
3
+ /**
4
+ * ADR-111 section 4: trim and lowercase only. Cats deliberately does not apply
5
+ * Gmail alias, dot, or plus-address canonicalization, so two addresses Google
6
+ * may route to one mailbox stay distinct here.
7
+ */
8
+ export function normalizePlatformAccountEmail(value) {
9
+ const normalized = value?.trim().toLowerCase();
10
+ return normalized ? normalized : null;
56
11
  }
57
12
  export function linkGoogleIdentityToAccount(input) {
58
13
  const account = input.state.accounts.find((candidate) => candidate.id === input.accountId && candidate.status === 'active') ?? null;
@@ -60,24 +15,32 @@ export function linkGoogleIdentityToAccount(input) {
60
15
  ? input.state.memberships.find((candidate) => candidate.accountId === account.id) ?? null
61
16
  : null;
62
17
  if (!account || !membership) {
63
- return null;
18
+ return { ok: false, reason: 'account_not_found' };
64
19
  }
65
20
  const identityForSubject = input.state.identities.find((candidate) => candidate.provider === 'google'
66
21
  && candidate.providerSubject === input.identity.providerSubject) ?? null;
67
22
  if (identityForSubject && identityForSubject.accountId !== account.id) {
68
- throw new Error('Google identity is already linked to another account.');
23
+ return { ok: false, reason: 'subject_owned_by_other_account' };
69
24
  }
70
25
  const identityForAccount = input.state.identities.find((candidate) => candidate.provider === 'google'
71
26
  && candidate.accountId === account.id) ?? null;
72
27
  if (identityForAccount
73
28
  && identityForAccount.providerSubject !== input.identity.providerSubject) {
74
- throw new Error('Account already has a linked Google identity.');
29
+ return { ok: false, reason: 'account_has_other_google_identity' };
30
+ }
31
+ // SPEC-113 requirements 28 and 29: an account that already carries an email
32
+ // must match it exactly. Only an email-less local-handle account may adopt
33
+ // the verified Google address, and only through this step-up-protected path.
34
+ const accountEmail = normalizePlatformAccountEmail(account.email);
35
+ const verifiedEmail = normalizePlatformAccountEmail(input.identity.email);
36
+ if (accountEmail && accountEmail !== verifiedEmail) {
37
+ return { ok: false, reason: 'email_mismatch' };
75
38
  }
76
39
  const nowIso = (input.now ?? new Date()).toISOString();
77
40
  const linkedIdentity = identityForSubject
78
41
  ? {
79
42
  ...identityForSubject,
80
- email: input.identity.email,
43
+ email: verifiedEmail,
81
44
  updatedAt: nowIso,
82
45
  }
83
46
  : {
@@ -85,13 +48,14 @@ export function linkGoogleIdentityToAccount(input) {
85
48
  accountId: account.id,
86
49
  provider: 'google',
87
50
  providerSubject: input.identity.providerSubject,
88
- email: input.identity.email,
51
+ email: verifiedEmail,
89
52
  createdAt: nowIso,
90
53
  updatedAt: nowIso,
91
54
  };
55
+ const adoptedAccountEmail = accountEmail === null && verifiedEmail !== null;
92
56
  const updatedAccount = {
93
57
  ...account,
94
- email: input.identity.email,
58
+ email: adoptedAccountEmail ? verifiedEmail : account.email,
95
59
  avatarUrl: input.identity.avatarUrl ?? account.avatarUrl,
96
60
  updatedAt: nowIso,
97
61
  };
@@ -99,15 +63,71 @@ export function linkGoogleIdentityToAccount(input) {
99
63
  ? input.state.identities.map((candidate) => candidate.id === identityForSubject.id ? linkedIdentity : candidate)
100
64
  : [...input.state.identities, linkedIdentity];
101
65
  return {
102
- state: {
103
- ...input.state,
104
- updatedAt: nowIso,
105
- accounts: input.state.accounts.map((candidate) => candidate.id === account.id ? updatedAccount : candidate),
106
- identities: nextIdentities,
66
+ ok: true,
67
+ result: {
68
+ state: {
69
+ ...input.state,
70
+ updatedAt: nowIso,
71
+ accounts: input.state.accounts.map((candidate) => candidate.id === account.id ? updatedAccount : candidate),
72
+ identities: nextIdentities,
73
+ },
74
+ account: updatedAccount,
75
+ identity: linkedIdentity,
76
+ membership: structuredClone(membership),
77
+ adoptedAccountEmail,
78
+ },
79
+ };
80
+ }
81
+ /**
82
+ * ADR-111 section 6: unlinking must preserve a usable local login and must not
83
+ * leave ambient access behind. Session records do not retain which identity
84
+ * established them, so every other browser and mobile session for the account
85
+ * is revoked and only the step-up-verified session survives.
86
+ */
87
+ export function unlinkGoogleIdentityFromAccount(input) {
88
+ const account = input.state.accounts.find((candidate) => candidate.id === input.accountId && candidate.status === 'active') ?? null;
89
+ const membership = account
90
+ ? input.state.memberships.find((candidate) => candidate.accountId === account.id) ?? null
91
+ : null;
92
+ if (!account || !membership) {
93
+ return { ok: false, reason: 'account_not_found' };
94
+ }
95
+ const googleIdentity = input.state.identities.find((candidate) => candidate.provider === 'google' && candidate.accountId === account.id) ?? null;
96
+ if (!googleIdentity) {
97
+ return { ok: false, reason: 'google_not_linked' };
98
+ }
99
+ const hasLocalFallback = input.state.identities.some((candidate) => candidate.provider === 'local_password'
100
+ && candidate.accountId === account.id
101
+ && Boolean(candidate.passwordHash)
102
+ && Boolean(candidate.passwordHashAlgorithm));
103
+ if (!hasLocalFallback) {
104
+ return { ok: false, reason: 'local_fallback_missing' };
105
+ }
106
+ const now = input.now ?? new Date();
107
+ const nowIso = now.toISOString();
108
+ const revokedSessionIds = [];
109
+ const sessions = input.state.sessions.map((session) => {
110
+ if (session.accountId !== account.id
111
+ || session.id === input.keepSessionId
112
+ || session.revokedAt !== null) {
113
+ return session;
114
+ }
115
+ revokedSessionIds.push(session.id);
116
+ return revokeSession(session, now);
117
+ });
118
+ return {
119
+ ok: true,
120
+ result: {
121
+ state: {
122
+ ...input.state,
123
+ updatedAt: nowIso,
124
+ identities: input.state.identities.filter((candidate) => candidate.id !== googleIdentity.id),
125
+ sessions,
126
+ },
127
+ account: structuredClone(account),
128
+ membership: structuredClone(membership),
129
+ revokedSessionIds,
107
130
  },
108
- account: updatedAccount,
109
- identity: linkedIdentity,
110
- membership: structuredClone(membership),
111
131
  };
112
132
  }
113
133
  export function createGoogleBrowserSessionForLinkedIdentity(input) {
@@ -132,12 +152,11 @@ export function createGoogleBrowserSessionForLinkedIdentity(input) {
132
152
  });
133
153
  const updatedIdentity = {
134
154
  ...providerIdentity,
135
- email: input.identity.email,
155
+ email: normalizePlatformAccountEmail(input.identity.email),
136
156
  updatedAt: nowIso,
137
157
  };
138
158
  const updatedAccount = {
139
159
  ...account,
140
- email: input.identity.email,
141
160
  avatarUrl: input.identity.avatarUrl ?? account.avatarUrl,
142
161
  updatedAt: nowIso,
143
162
  };
@@ -1 +1 @@
1
- {"version":3,"file":"googleAccount.js","sourceRoot":"","sources":["../../../../src/platform/auth/googleAccount.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"googleAccount.js","sourceRoot":"","sources":["../../../../src/platform/auth/googleAccount.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
+ export * from './actionGrant.js';
1
2
  export * from './actorAttribution.js';
3
+ export * from './adminCredentials.js';
2
4
  export * from './bootstrap.js';
3
5
  export * from './bootstrapEnvelope.js';
4
6
  export * from './browserHandoff.js';
@@ -12,11 +14,13 @@ export * from './googleCsrf.js';
12
14
  export * from './googleJwksVerifier.js';
13
15
  export * from './googleVerifier.js';
14
16
  export * from './localLogin.js';
17
+ export * from './loginMethods.js';
15
18
  export * from './originGate.js';
16
19
  export * from './password.js';
17
20
  export * from './principal.js';
18
21
  export * from './readiness.js';
19
22
  export * from './recovery.js';
23
+ export * from './securityEvents.js';
20
24
  export * from './session.js';
21
25
  export * from './state.js';
22
26
  export * from './store.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/platform/auth/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/platform/auth/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC"}
@@ -1,4 +1,6 @@
1
+ export * from './actionGrant.js';
1
2
  export * from './actorAttribution.js';
3
+ export * from './adminCredentials.js';
2
4
  export * from './bootstrap.js';
3
5
  export * from './bootstrapEnvelope.js';
4
6
  export * from './browserHandoff.js';
@@ -12,11 +14,13 @@ export * from './googleCsrf.js';
12
14
  export * from './googleJwksVerifier.js';
13
15
  export * from './googleVerifier.js';
14
16
  export * from './localLogin.js';
17
+ export * from './loginMethods.js';
15
18
  export * from './originGate.js';
16
19
  export * from './password.js';
17
20
  export * from './principal.js';
18
21
  export * from './readiness.js';
19
22
  export * from './recovery.js';
23
+ export * from './securityEvents.js';
20
24
  export * from './session.js';
21
25
  export * from './state.js';
22
26
  export * from './store.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/auth/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platform/auth/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC"}
@@ -4,6 +4,16 @@ export interface PlatformLocalPasswordCredentialMatch {
4
4
  account: PlatformAccountRecord;
5
5
  membership: PlatformMembershipRecord;
6
6
  }
7
+ /**
8
+ * SPEC-113 requirement 16: step-up verifies the local-password Identity that
9
+ * belongs to the *current* account. The caller must never be able to choose
10
+ * which identity is checked, so this takes an account id rather than a
11
+ * client-supplied identifier.
12
+ */
13
+ export declare function verifyPlatformLocalPasswordForAccount(state: PlatformAuthState, input: {
14
+ accountId: string;
15
+ password: string;
16
+ }): Promise<PlatformLocalPasswordCredentialMatch | null>;
7
17
  export declare function verifyPlatformLocalPasswordCredential(state: PlatformAuthState, input: {
8
18
  identifier: string;
9
19
  password: string;
@@ -1 +1 @@
1
- {"version":3,"file":"localLogin.d.ts","sourceRoot":"","sources":["../../../../src/platform/auth/localLogin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EACzB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,oCAAoC;IACnD,QAAQ,EAAE,sBAAsB,CAAC;IACjC,OAAO,EAAE,qBAAqB,CAAC;IAC/B,UAAU,EAAE,wBAAwB,CAAC;CACtC;AAED,wBAAsB,qCAAqC,CACzD,KAAK,EAAE,iBAAiB,EACxB,KAAK,EAAE;IACL,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,GACA,OAAO,CAAC,oCAAoC,GAAG,IAAI,CAAC,CA4BtD"}
1
+ {"version":3,"file":"localLogin.d.ts","sourceRoot":"","sources":["../../../../src/platform/auth/localLogin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EACzB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,oCAAoC;IACnD,QAAQ,EAAE,sBAAsB,CAAC;IACjC,OAAO,EAAE,qBAAqB,CAAC;IAC/B,UAAU,EAAE,wBAAwB,CAAC;CACtC;AAED;;;;;GAKG;AACH,wBAAsB,qCAAqC,CACzD,KAAK,EAAE,iBAAiB,EACxB,KAAK,EAAE;IACL,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB,GACA,OAAO,CAAC,oCAAoC,GAAG,IAAI,CAAC,CAYtD;AAED,wBAAsB,qCAAqC,CACzD,KAAK,EAAE,iBAAiB,EACxB,KAAK,EAAE;IACL,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,GACA,OAAO,CAAC,oCAAoC,GAAG,IAAI,CAAC,CA4BtD"}
@@ -1,4 +1,21 @@
1
1
  import { verifyLocalPassword } from './password.js';
2
+ /**
3
+ * SPEC-113 requirement 16: step-up verifies the local-password Identity that
4
+ * belongs to the *current* account. The caller must never be able to choose
5
+ * which identity is checked, so this takes an account id rather than a
6
+ * client-supplied identifier.
7
+ */
8
+ export async function verifyPlatformLocalPasswordForAccount(state, input) {
9
+ const identity = state.identities.find((candidate) => candidate.provider === 'local_password'
10
+ && candidate.accountId === input.accountId) ?? null;
11
+ if (!identity) {
12
+ return null;
13
+ }
14
+ return verifyPlatformLocalPasswordCredential(state, {
15
+ identifier: identity.providerSubject,
16
+ password: input.password,
17
+ });
18
+ }
2
19
  export async function verifyPlatformLocalPasswordCredential(state, input) {
3
20
  const identity = state.identities.find((candidate) => candidate.provider === 'local_password'
4
21
  && (candidate.providerSubject === input.identifier
@@ -1 +1 @@
1
- {"version":3,"file":"localLogin.js","sourceRoot":"","sources":["../../../../src/platform/auth/localLogin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAcpD,MAAM,CAAC,KAAK,UAAU,qCAAqC,CACzD,KAAwB,EACxB,KAGC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CACnD,SAAS,CAAC,QAAQ,KAAK,gBAAgB;WACpC,CACD,SAAS,CAAC,eAAe,KAAK,KAAK,CAAC,UAAU;eAC3C,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,KAAK,CAAC,UAAU,CACvD,CACF,IAAI,IAAI,CAAC;IACV,MAAM,OAAO,GAAG,QAAQ;QACtB,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI;QACjF,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,UAAU,GAAG,OAAO;QACxB,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE,CAAC,IAAI,IAAI;QACnF,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,KAAK,GAAG,QAAQ,EAAE,YAAY,IAAI,QAAQ,CAAC,qBAAqB;QACpE,CAAC,CAAC,MAAM,mBAAmB,CAAC,KAAK,CAAC,QAAQ,EAAE;YACxC,YAAY,EAAE,QAAQ,CAAC,YAAY;YACnC,qBAAqB,EAAE,QAAQ,CAAC,qBAAqB;SACtD,CAAC;QACJ,CAAC,CAAC,KAAK,CAAC;IACV,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;QAClF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC;QACnC,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC;QACjC,UAAU,EAAE,eAAe,CAAC,UAAU,CAAC;KACxC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"localLogin.js","sourceRoot":"","sources":["../../../../src/platform/auth/localLogin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAcpD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,qCAAqC,CACzD,KAAwB,EACxB,KAGC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CACnD,SAAS,CAAC,QAAQ,KAAK,gBAAgB;WACpC,SAAS,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAC3C,IAAI,IAAI,CAAC;IACV,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,qCAAqC,CAAC,KAAK,EAAE;QAClD,UAAU,EAAE,QAAQ,CAAC,eAAe;QACpC,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACzB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qCAAqC,CACzD,KAAwB,EACxB,KAGC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CACnD,SAAS,CAAC,QAAQ,KAAK,gBAAgB;WACpC,CACD,SAAS,CAAC,eAAe,KAAK,KAAK,CAAC,UAAU;eAC3C,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,KAAK,CAAC,UAAU,CACvD,CACF,IAAI,IAAI,CAAC;IACV,MAAM,OAAO,GAAG,QAAQ;QACtB,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI;QACjF,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,UAAU,GAAG,OAAO;QACxB,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE,CAAC,IAAI,IAAI;QACnF,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,KAAK,GAAG,QAAQ,EAAE,YAAY,IAAI,QAAQ,CAAC,qBAAqB;QACpE,CAAC,CAAC,MAAM,mBAAmB,CAAC,KAAK,CAAC,QAAQ,EAAE;YACxC,YAAY,EAAE,QAAQ,CAAC,YAAY;YACnC,qBAAqB,EAAE,QAAQ,CAAC,qBAAqB;SACtD,CAAC;QACJ,CAAC,CAAC,KAAK,CAAC;IACV,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;QAClF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC;QACnC,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC;QACjC,UAAU,EAAE,eAAe,CAAC,UAAU,CAAC;KACxC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { PlatformAuthState } from './types.js';
2
+ /**
3
+ * SPEC-113 requirement 10: the authenticated auth-status projection reports
4
+ * which login methods the current account owns. Requirement 13 makes Identity
5
+ * records the only source; the renderer must not infer linked state from
6
+ * account email, avatar, or a prior login result.
7
+ */
8
+ export interface PlatformLoginMethodsSummary {
9
+ localPassword: {
10
+ linked: boolean;
11
+ };
12
+ google: {
13
+ linked: boolean;
14
+ email: string | null;
15
+ };
16
+ }
17
+ export declare function summarizePlatformLoginMethods(state: PlatformAuthState, accountId: string): PlatformLoginMethodsSummary;
18
+ //# sourceMappingURL=loginMethods.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loginMethods.d.ts","sourceRoot":"","sources":["../../../../src/platform/auth/loginMethods.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,WAAW,2BAA2B;IAC1C,aAAa,EAAE;QACb,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC;IACF,MAAM,EAAE;QACN,MAAM,EAAE,OAAO,CAAC;QAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;KACtB,CAAC;CACH;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,iBAAiB,EACxB,SAAS,EAAE,MAAM,GAChB,2BAA2B,CAsB7B"}
@@ -0,0 +1,19 @@
1
+ import { normalizePlatformAccountEmail } from './googleAccount.js';
2
+ export function summarizePlatformLoginMethods(state, accountId) {
3
+ const identities = state.identities.filter((identity) => identity.accountId === accountId);
4
+ const googleIdentity = identities.find((identity) => identity.provider === 'google') ?? null;
5
+ return {
6
+ localPassword: {
7
+ linked: identities.some((identity) => identity.provider === 'local_password'
8
+ && Boolean(identity.passwordHash)
9
+ && Boolean(identity.passwordHashAlgorithm)),
10
+ },
11
+ google: {
12
+ linked: googleIdentity !== null,
13
+ email: googleIdentity
14
+ ? normalizePlatformAccountEmail(googleIdentity.email)
15
+ : null,
16
+ },
17
+ };
18
+ }
19
+ //# sourceMappingURL=loginMethods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loginMethods.js","sourceRoot":"","sources":["../../../../src/platform/auth/loginMethods.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AAmBnE,MAAM,UAAU,6BAA6B,CAC3C,KAAwB,EACxB,SAAiB;IAEjB,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CACxC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,KAAK,SAAS,CAC/C,CAAC;IACF,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CACpC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAC7C,IAAI,IAAI,CAAC;IACV,OAAO;QACL,aAAa,EAAE;YACb,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CACnC,QAAQ,CAAC,QAAQ,KAAK,gBAAgB;mBACnC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;mBAC9B,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAC3C;SACF;QACD,MAAM,EAAE;YACN,MAAM,EAAE,cAAc,KAAK,IAAI;YAC/B,KAAK,EAAE,cAAc;gBACnB,CAAC,CAAC,6BAA6B,CAAC,cAAc,CAAC,KAAK,CAAC;gBACrD,CAAC,CAAC,IAAI;SACT;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Secret-free identity-lifecycle security events.
3
+ *
4
+ * ADR-111 section 7 requires these to be emitted through an injected reporter
5
+ * so a later audit sink can persist the same events without rewriting the auth
6
+ * routes. The payload is deliberately narrow: stable Cats identifiers, an
7
+ * outcome, and a bounded reason code. Passwords, raw session or action tokens,
8
+ * Google credentials, and provider-token claims must never reach a reporter.
9
+ */
10
+ export declare const PLATFORM_AUTH_SECURITY_EVENT_KINDS: readonly ["first_admin_created", "step_up_succeeded", "step_up_failed", "google_link_succeeded", "google_link_failed", "google_unlink_succeeded", "google_unlink_failed"];
11
+ export type PlatformAuthSecurityEventKind = (typeof PLATFORM_AUTH_SECURITY_EVENT_KINDS)[number];
12
+ export type PlatformAuthSecurityEventOutcome = 'success' | 'failure';
13
+ export interface PlatformAuthSecurityEvent {
14
+ kind: PlatformAuthSecurityEventKind;
15
+ outcome: PlatformAuthSecurityEventOutcome;
16
+ occurredAt: string;
17
+ accountId: string | null;
18
+ sessionId: string | null;
19
+ reason: string | null;
20
+ }
21
+ export type PlatformAuthSecurityEventReporter = (event: PlatformAuthSecurityEvent) => void | Promise<void>;
22
+ export interface CreatePlatformAuthSecurityEventInput {
23
+ kind: PlatformAuthSecurityEventKind;
24
+ outcome: PlatformAuthSecurityEventOutcome;
25
+ now: Date;
26
+ accountId?: string | null;
27
+ sessionId?: string | null;
28
+ reason?: string | null;
29
+ }
30
+ export declare function createPlatformAuthSecurityEvent(input: CreatePlatformAuthSecurityEventInput): PlatformAuthSecurityEvent;
31
+ //# sourceMappingURL=securityEvents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"securityEvents.d.ts","sourceRoot":"","sources":["../../../../src/platform/auth/securityEvents.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,eAAO,MAAM,kCAAkC,2KAQrC,CAAC;AAEX,MAAM,MAAM,6BAA6B,GACvC,CAAC,OAAO,kCAAkC,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtD,MAAM,MAAM,gCAAgC,GAAG,SAAS,GAAG,SAAS,CAAC;AAErE,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,6BAA6B,CAAC;IACpC,OAAO,EAAE,gCAAgC,CAAC;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,MAAM,iCAAiC,GAAG,CAC9C,KAAK,EAAE,yBAAyB,KAC7B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,MAAM,WAAW,oCAAoC;IACnD,IAAI,EAAE,6BAA6B,CAAC;IACpC,OAAO,EAAE,gCAAgC,CAAC;IAC1C,GAAG,EAAE,IAAI,CAAC;IACV,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAID,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,oCAAoC,GAC1C,yBAAyB,CAS3B"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Secret-free identity-lifecycle security events.
3
+ *
4
+ * ADR-111 section 7 requires these to be emitted through an injected reporter
5
+ * so a later audit sink can persist the same events without rewriting the auth
6
+ * routes. The payload is deliberately narrow: stable Cats identifiers, an
7
+ * outcome, and a bounded reason code. Passwords, raw session or action tokens,
8
+ * Google credentials, and provider-token claims must never reach a reporter.
9
+ */
10
+ export const PLATFORM_AUTH_SECURITY_EVENT_KINDS = [
11
+ 'first_admin_created',
12
+ 'step_up_succeeded',
13
+ 'step_up_failed',
14
+ 'google_link_succeeded',
15
+ 'google_link_failed',
16
+ 'google_unlink_succeeded',
17
+ 'google_unlink_failed',
18
+ ];
19
+ const MAX_REASON_LENGTH = 64;
20
+ export function createPlatformAuthSecurityEvent(input) {
21
+ return {
22
+ kind: input.kind,
23
+ outcome: input.outcome,
24
+ occurredAt: input.now.toISOString(),
25
+ accountId: input.accountId ?? null,
26
+ sessionId: input.sessionId ?? null,
27
+ reason: normalizeReason(input.reason),
28
+ };
29
+ }
30
+ /**
31
+ * Reason codes are machine-readable slugs, never free text a caller supplied.
32
+ * Anything longer than a slug is dropped rather than truncated so an unexpected
33
+ * value cannot smuggle credential material into a log line.
34
+ */
35
+ function normalizeReason(reason) {
36
+ const trimmed = reason?.trim();
37
+ if (!trimmed) {
38
+ return null;
39
+ }
40
+ if (trimmed.length > MAX_REASON_LENGTH || !/^[a-z0-9_]+$/u.test(trimmed)) {
41
+ return 'unspecified';
42
+ }
43
+ return trimmed;
44
+ }
45
+ //# sourceMappingURL=securityEvents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"securityEvents.js","sourceRoot":"","sources":["../../../../src/platform/auth/securityEvents.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,CAAC,MAAM,kCAAkC,GAAG;IAChD,qBAAqB;IACrB,mBAAmB;IACnB,gBAAgB;IAChB,uBAAuB;IACvB,oBAAoB;IACpB,yBAAyB;IACzB,sBAAsB;CACd,CAAC;AA6BX,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B,MAAM,UAAU,+BAA+B,CAC7C,KAA2C;IAE3C,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE;QACnC,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;QAClC,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;QAClC,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC;KACtC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,MAAiC;IACxD,MAAM,OAAO,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,iBAAiB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACzE,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -685,14 +685,6 @@ export interface ChannelExportPayload {
685
685
  assignedParticipants?: ChatChannelParticipant[];
686
686
  assignedCats: ChatChannelCat[];
687
687
  }
688
- export interface SetupCompleteInput {
689
- ownerDisplayName: string;
690
- bossCatName?: string;
691
- bossCatProvider: string;
692
- bossCatInstance?: string;
693
- bossCatModel?: string;
694
- bossCatModelSelection?: ProviderModelSelection | null;
695
- }
696
688
  export interface CreateBotBindingInput {
697
689
  platform: 'telegram' | 'line';
698
690
  botName: string;