@rubytech/create-maxy-code 0.1.460 → 0.1.461

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 (63) hide show
  1. package/dist/__tests__/cron-heartbeat-registration.test.js +57 -28
  2. package/dist/__tests__/launchd-plist.test.js +26 -0
  3. package/dist/cron-registration.js +30 -8
  4. package/dist/index.js +50 -9
  5. package/dist/launchd-plist.js +1 -1
  6. package/dist/uninstall.js +9 -3
  7. package/package.json +1 -1
  8. package/payload/platform/plugins/cloudflare/bin/portal-enrol.mjs +96 -0
  9. package/payload/platform/plugins/cloudflare/mcp/__tests__/auth-route.test.ts +54 -40
  10. package/payload/platform/plugins/cloudflare/mcp/__tests__/passcode.test.ts +169 -39
  11. package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-enrol.test.ts +207 -0
  12. package/payload/platform/plugins/cloudflare/mcp/package.json +1 -1
  13. package/payload/platform/plugins/cloudflare/skills/data-portal/SKILL.md +21 -19
  14. package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/_lib/passcode.mjs +193 -0
  15. package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/auth.ts +18 -12
  16. package/payload/platform/plugins/cloudflare/skills/data-portal/template/schema.sql +14 -5
  17. package/payload/platform/plugins/voice-mirror/PLUGIN.md +1 -1
  18. package/payload/platform/plugins/voice-mirror/mcp/dist/tools/voice-distil-profile.d.ts.map +1 -1
  19. package/payload/platform/plugins/voice-mirror/mcp/dist/tools/voice-distil-profile.js +98 -9
  20. package/payload/platform/plugins/voice-mirror/mcp/dist/tools/voice-distil-profile.js.map +1 -1
  21. package/payload/platform/plugins/voice-mirror/mcp/dist/tools/voice-retrieve-conditioning.d.ts.map +1 -1
  22. package/payload/platform/plugins/voice-mirror/mcp/dist/tools/voice-retrieve-conditioning.js +54 -21
  23. package/payload/platform/plugins/voice-mirror/mcp/dist/tools/voice-retrieve-conditioning.js.map +1 -1
  24. package/payload/platform/plugins/voice-mirror/mcp/scripts/smoke.mjs +110 -0
  25. package/payload/platform/plugins/voice-mirror/skills/voice-mirror/SKILL.md +6 -3
  26. package/payload/platform/scripts/__tests__/logs-rotate.test.sh +256 -0
  27. package/payload/platform/scripts/__tests__/resume-tunnel.test.sh +79 -0
  28. package/payload/platform/scripts/logs-rotate.sh +204 -0
  29. package/payload/platform/scripts/resume-tunnel.sh +27 -0
  30. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  31. package/payload/platform/services/claude-session-manager/dist/http-server.js +41 -5
  32. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  33. package/payload/platform/services/claude-session-manager/dist/index.d.ts +1 -0
  34. package/payload/platform/services/claude-session-manager/dist/index.d.ts.map +1 -1
  35. package/payload/platform/services/claude-session-manager/dist/index.js +22 -0
  36. package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
  37. package/payload/platform/services/claude-session-manager/dist/install-start-counter.d.ts +2 -0
  38. package/payload/platform/services/claude-session-manager/dist/install-start-counter.d.ts.map +1 -0
  39. package/payload/platform/services/claude-session-manager/dist/install-start-counter.js +12 -0
  40. package/payload/platform/services/claude-session-manager/dist/install-start-counter.js.map +1 -0
  41. package/payload/platform/services/claude-session-manager/dist/pty-census.d.ts +122 -9
  42. package/payload/platform/services/claude-session-manager/dist/pty-census.d.ts.map +1 -1
  43. package/payload/platform/services/claude-session-manager/dist/pty-census.js +214 -29
  44. package/payload/platform/services/claude-session-manager/dist/pty-census.js.map +1 -1
  45. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  46. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +2 -1
  47. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  48. package/payload/platform/services/claude-session-manager/dist/rc-daemon.d.ts.map +1 -1
  49. package/payload/platform/services/claude-session-manager/dist/rc-daemon.js +13 -1
  50. package/payload/platform/services/claude-session-manager/dist/rc-daemon.js.map +1 -1
  51. package/payload/platform/services/claude-session-manager/dist/session-memory-cap.d.ts.map +1 -1
  52. package/payload/platform/services/claude-session-manager/dist/session-memory-cap.js +4 -2
  53. package/payload/platform/services/claude-session-manager/dist/session-memory-cap.js.map +1 -1
  54. package/payload/platform/services/claude-session-manager/dist/slice-memory-policy.d.ts +150 -0
  55. package/payload/platform/services/claude-session-manager/dist/slice-memory-policy.d.ts.map +1 -0
  56. package/payload/platform/services/claude-session-manager/dist/slice-memory-policy.js +333 -0
  57. package/payload/platform/services/claude-session-manager/dist/slice-memory-policy.js.map +1 -0
  58. package/payload/platform/services/claude-session-manager/dist/start-counter.d.ts +10 -0
  59. package/payload/platform/services/claude-session-manager/dist/start-counter.d.ts.map +1 -0
  60. package/payload/platform/services/claude-session-manager/dist/start-counter.js +55 -0
  61. package/payload/platform/services/claude-session-manager/dist/start-counter.js.map +1 -0
  62. package/payload/server/server.js +55 -35
  63. package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/_lib/passcode.ts +0 -73
@@ -8,7 +8,7 @@
8
8
  "build": "tsc",
9
9
  "start": "node dist/index.js",
10
10
  "test": "vitest run",
11
- "typecheck:templates": "tsc --noEmit --strict --target es2022 --module esnext --moduleResolution bundler --lib es2022,dom ../skills/*/template/functions/api/*.ts ../skills/*/template/functions/api/_lib/*.ts"
11
+ "typecheck:templates": "tsc --noEmit --strict --allowJs --checkJs --target es2022 --module esnext --moduleResolution bundler --lib es2022,dom ../skills/*/template/functions/api/*.ts ../skills/*/template/functions/api/_lib/*.ts ../skills/*/template/functions/api/_lib/*.mjs"
12
12
  },
13
13
  "dependencies": {
14
14
  "@modelcontextprotocol/sdk": "^1.12.1"
@@ -43,11 +43,25 @@ Collect from the operator the portal's custom domain and the list of people, the
43
43
  `<accountDir>/data-portal.json` carrying `portalDomain`, `portalDbName`, `bucketName`, and a
44
44
  `people` array of `{ name, ownerId, prefix }`.
45
45
 
46
- For each person, generate a high-entropy passcode, print it to the operator **once**, and insert the
47
- person into D1 with only a PBKDF2 salt and hash. **A passcode is never stored in plaintext** — not
48
- in `data-portal.json`, not in a log line, nowhere on the device. The operator conveys it to the
49
- person out of band. Rotating a passcode is a re-run of this step for that person; there is no
50
- separate editor.
46
+ For each person:
47
+
48
+ ```bash
49
+ node platform/plugins/cloudflare/bin/portal-enrol.mjs --owner <ownerId> --name <name> \
50
+ | npx wrangler d1 execute <portalDbName> --remote --file=-
51
+ ```
52
+
53
+ The script mints the passcode and prints it **once to stderr**, so it reaches the operator's terminal
54
+ and never the pipe; stdout carries the `INSERT` alone. Do not hand-roll this: the passcode's length
55
+ and alphabet are pinned in `template/functions/api/_lib/passcode.mjs`, the script is what applies
56
+ them, and a passcode minted any other way is unpinned by definition. The script refuses an `ownerId`
57
+ the isolation gate would reject, so a bad name fails here rather than after the row lands.
58
+
59
+ The statement is an upsert on `ownerId`, which is what makes rotation a re-run rather than a
60
+ constraint error.
61
+
62
+ **A passcode is never stored in plaintext** — not in `data-portal.json`, not in a log line, nowhere
63
+ on the device. The operator conveys it to the person out of band. Rotating a passcode is a re-run of
64
+ the script for that person; there is no separate editor.
51
65
 
52
66
  Rotation also revokes: a session records a digest of the person's passcode hash at sign-in, and the
53
67
  session lookup requires it to still match, so re-running enrolment kills every live session for that
@@ -74,23 +88,12 @@ Hand the assembled tree to `cloudflare:site-deploy`. Both bindings — D1 and R2
74
88
  config in `wrangler.toml`, carried in the deploy payload under the Pages scope; the deploy needs no
75
89
  R2 token. Only the bucket *creation* in step 1 needs R2 write, and the broker holds that.
76
90
 
77
- ## The portal needs a paid Cloudflare plan
78
-
79
- Check this before promising a date. Signing in costs one PBKDF2 derivation at the OWASP floor of
80
- 600,000 iterations, measured at roughly 250ms of CPU. Workers Free allows **10ms of CPU per
81
- request**, so on a free plan authentication cannot succeed — and no OWASP-compliant setting fits
82
- either, since even 100,000 iterations costs about 40ms. Paid plans allow far more and are fine.
83
-
84
- The cost is tunable without a migration if it ever needs to be: `iterations` is stored per person
85
- row, so it is the enrolment-time value that binds, not a constant baked into the deployed code.
86
-
87
91
  ## Done-gate
88
92
 
89
93
  The portal is not done until all five hold on the live domain:
90
94
 
91
95
  1. A cache-busted request to the portal domain returns `HTTP/2 200`.
92
- 2. Signing in with the right passcode returns `200` **within the CPU budget** rather than timing
93
- out — this is the check that catches a free-plan deployment, and it fails nowhere else.
96
+ 2. Signing in with the right passcode returns `200`.
94
97
  3. A wrong passcode returns `401`; the **sixth** rapid wrong passcode returns `429` (five are
95
98
  allowed per fifteen minutes, per person, per IP).
96
99
  4. An upload as one person returns `200`, and the object is present in R2 under that person's
@@ -100,8 +103,7 @@ The portal is not done until all five hold on the live domain:
100
103
 
101
104
  A `502` on `/api/upload` with `op=r2-put result=failed` on every attempt is the expected signature of
102
105
  an R2 binding that did not deploy — check `wrangler.toml` reached the tree with its placeholder
103
- filled. An auth request that hangs or 500s while everything else works is the free-plan signature
104
- above, not a code fault.
106
+ filled.
105
107
 
106
108
  Uploads are capped at 25 MiB and a larger one returns `413` with `result=too-large`.
107
109
 
@@ -0,0 +1,193 @@
1
+ // Passcode generation, strength and hashing for the data portal.
2
+ //
3
+ // This module is JavaScript, not TypeScript, and that is deliberate: it has two
4
+ // consumers on two runtimes. The Worker imports it (wrangler bundles JS), and
5
+ // enrolment imports it from bare node on-device, which cannot load .ts. A second
6
+ // copy of the hash for the enrolment side would drift, and the failure mode of
7
+ // drift is that enrolment writes hashes the Worker rejects. JSDoc plus
8
+ // `typecheck:templates --checkJs` keeps the type cover 1689 added.
9
+ //
10
+ // constantTimeEqual is hand-rolled deliberately: crypto.subtle.timingSafeEqual
11
+ // is a Cloudflare extension with no Node equivalent, so depending on it would
12
+ // make the comparison untestable here.
13
+
14
+ /** Crockford base32: digits and letters minus I, L, O and U, which are the ones
15
+ * misread when the operator conveys a passcode to a person out of band. 32
16
+ * symbols is exactly 5 bits, and 256 divides by 32, so a masked random byte is
17
+ * an unbiased draw with no rejection sampling.
18
+ *
19
+ * How much of Crockford this portal takes, stated so nobody has to infer it
20
+ * from behaviour again (Task 1713):
21
+ *
22
+ * ADOPTED — the excluded letters, above, and case-insensitivity on decode.
23
+ * The alphabet is uppercase and so is everything stored;
24
+ * verifyPasscode uppercases what it is given, so a person may type
25
+ * either case. That is the one normalisation point.
26
+ * DECLINED — the letter-to-digit decode (I and L to 1, O to 0), check
27
+ * symbols, and hyphen tolerance. None are implemented.
28
+ *
29
+ * So "Crockford" here means this alphabet plus the case rule, and nothing
30
+ * further. 1708 shipped the first half without the second, which is the gap
31
+ * 1713 closed; a future reader adding the rest should treat it as a new
32
+ * decision, not as finishing this one.
33
+ */
34
+ export const PASSCODE_ALPHABET = '0123456789ABCDEFGHJKMNPQRSTVWXYZ'
35
+
36
+ /** 26 x 5 bits = 130, which clears the 128-bit floor this portal's security
37
+ * rests on. Changing this constant changes that guarantee: see the note at
38
+ * hashPasscode before touching it. */
39
+ export const PASSCODE_LENGTH = 26
40
+
41
+ /** What PASSCODE_LENGTH and PASSCODE_ALPHABET buy, stated once so a test can
42
+ * pin it rather than a comment asserting it. */
43
+ export const PASSCODE_ENTROPY_BITS = PASSCODE_LENGTH * 5
44
+
45
+ /** Enrolment refused a passcode below the pinned strength. Named rather than a
46
+ * bare Error so a caller can tell a weak passcode from a broken salt. */
47
+ export class PasscodeTooWeakError extends Error {
48
+ /** @param {string} detail */
49
+ constructor(detail) {
50
+ super(`passcode too weak: ${detail}`)
51
+ this.name = 'PasscodeTooWeakError'
52
+ /** @type {'passcode-too-weak'} */
53
+ this.reason = 'passcode-too-weak'
54
+ }
55
+ }
56
+
57
+ /** Mint a passcode. This is the ONLY source of passcode entropy in the portal —
58
+ * assertPasscodeStrength below cannot supply it, only check the shape.
59
+ * @returns {string} */
60
+ export function generatePasscode() {
61
+ const bytes = new Uint8Array(PASSCODE_LENGTH)
62
+ crypto.getRandomValues(bytes)
63
+ let out = ''
64
+ // & 31 is unbiased here precisely because the alphabet is 32 long.
65
+ for (const b of bytes) out += PASSCODE_ALPHABET[b & 31]
66
+ return out
67
+ }
68
+
69
+ /** Refuse a passcode that is not the pinned length drawn from the pinned
70
+ * alphabet.
71
+ *
72
+ * This is a STRUCTURAL check and nothing more. It cannot measure entropy: a
73
+ * 26-character run of 'A' passes it. Do not describe it as enforcing
74
+ * PASSCODE_ENTROPY_BITS — an arbitrary string's entropy is not a computable
75
+ * property of the string. What it does buy is the case that motivated it: an
76
+ * enrolling agent satisfying "high-entropy passcode" with a six-digit number
77
+ * can no longer store one. Entropy itself comes from generatePasscode.
78
+ * @param {string} passcode
79
+ * @returns {void} */
80
+ export function assertPasscodeStrength(passcode) {
81
+ if (typeof passcode !== 'string' || passcode.length !== PASSCODE_LENGTH) {
82
+ throw new PasscodeTooWeakError(`expected ${PASSCODE_LENGTH} characters`)
83
+ }
84
+ for (const c of passcode) {
85
+ if (!PASSCODE_ALPHABET.includes(c)) {
86
+ throw new PasscodeTooWeakError('character outside the pinned alphabet')
87
+ }
88
+ }
89
+ }
90
+
91
+ /** @param {Uint8Array} bytes @returns {string} */
92
+ export function randomSaltHex(bytes) {
93
+ return Array.from(bytes, (b) => b.toString(16).padStart(2, '0')).join('')
94
+ }
95
+
96
+ /** Returns Uint8Array<ArrayBuffer>, not the bare Uint8Array: the bare form
97
+ * widens to ArrayBufferLike, which Web Crypto will not accept as a BufferSource
98
+ * because a SharedArrayBuffer could back it.
99
+ * @param {string} hex
100
+ * @returns {Uint8Array<ArrayBuffer> | null} */
101
+ function hexToBytes(hex) {
102
+ if (hex.length === 0 || hex.length % 2 !== 0 || !/^[0-9a-f]+$/i.test(hex)) return null
103
+ const out = new Uint8Array(hex.length / 2)
104
+ for (let i = 0; i < out.length; i++) out[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16)
105
+ return out
106
+ }
107
+
108
+ /** Hash a passcode for storage: one SHA-256 over salt || passcode.
109
+ *
110
+ * ONE fast hash, no key stretching, and that is safe ONLY because passcodes are
111
+ * machine-generated by generatePasscode at PASSCODE_LENGTH. Stretching exists to
112
+ * make guessing a HUMAN-CHOSEN password expensive; 130 random bits are
113
+ * unguessable however fast the hash is, which is why nobody stretches a
114
+ * magic-link token either.
115
+ *
116
+ * So: if anyone ever lets an operator choose a memorable passcode, key
117
+ * stretching must come back in the SAME change. The danger here is not the fast
118
+ * hash. It is a later relaxation of generated-only while the fast hash stays.
119
+ *
120
+ * The salt earns its keep even without stretching: two people holding the same
121
+ * passcode still get different stored hashes, and no precomputed table over the
122
+ * alphabet is reusable across rows.
123
+ * @param {string} passcode
124
+ * @param {string} saltHex
125
+ * @returns {Promise<string>} */
126
+ export async function hashPasscode(passcode, saltHex) {
127
+ assertPasscodeStrength(passcode)
128
+ const salt = hexToBytes(saltHex)
129
+ if (!salt) throw new Error('salt must be hex')
130
+ const encoded = new TextEncoder().encode(passcode)
131
+ const message = new Uint8Array(salt.length + encoded.length)
132
+ message.set(salt, 0)
133
+ message.set(encoded, salt.length)
134
+ const digest = await crypto.subtle.digest('SHA-256', message)
135
+ return randomSaltHex(new Uint8Array(digest))
136
+ }
137
+
138
+ /** Verify a passcode against a stored salt and hash. Returns false rather than
139
+ * throwing on any malformed input, including a passcode that would not pass
140
+ * enrolment: sign-in is not the place to crash over a bad row.
141
+ * @param {string} passcode
142
+ * @param {string} saltHex
143
+ * @param {string} expectedHashHex
144
+ * @returns {Promise<boolean>} */
145
+ export async function verifyPasscode(passcode, saltHex, expectedHashHex) {
146
+ const expected = hexToBytes(expectedHashHex)
147
+ if (!expected) return false
148
+ /** @type {string} */
149
+ let actualHex
150
+ try {
151
+ // Crockford is case-insensitive on decode, and 1708 chose this alphabet for
152
+ // the very reason that rule exists: a person transcribes the passcode by
153
+ // hand. Uppercasing here is the second half of that choice (Task 1713), so
154
+ // the case someone types stops being something they can get wrong.
155
+ //
156
+ // This is the ONE normalisation point. hashPasscode and
157
+ // assertPasscodeStrength stay strict on the canonical uppercase form, so
158
+ // what enrolment stores is unchanged and only accepted INPUT widens.
159
+ //
160
+ // Inside the try deliberately: a malformed PASSCODE must return false rather
161
+ // than throw, and .toUpperCase() throws on a non-string. Outside the try,
162
+ // that would break for exactly the input class it exists to cover.
163
+ // (Scoped to the passcode on purpose. The docblock above says "any
164
+ // malformed input", which is not quite true of expectedHashHex — a null one
165
+ // throws out of hexToBytes before this try is entered. Unreachable today,
166
+ // since schema.sql pins hash TEXT NOT NULL; tracked in Task 1718 rather
167
+ // than restated here as though it held.)
168
+ //
169
+ // The strength gate therefore applies to the normalised form: verification
170
+ // accepts any string whose uppercase form is a valid passcode. One
171
+ // consequence, left unguarded on purpose — 'ß' uppercases to 'SS', so a
172
+ // 25-character string containing it can normalise onto a 26-character
173
+ // passcode. Building one requires already knowing the passcode, so it costs
174
+ // nothing an attacker could spend, and a fourth check to close it would buy
175
+ // no security.
176
+ actualHex = await hashPasscode(passcode.toUpperCase(), saltHex)
177
+ } catch {
178
+ return false
179
+ }
180
+ const actual = hexToBytes(actualHex)
181
+ if (!actual) return false
182
+ return constantTimeEqual(actual, expected)
183
+ }
184
+
185
+ /** @param {Uint8Array} a @param {Uint8Array} b @returns {boolean} */
186
+ export function constantTimeEqual(a, b) {
187
+ // Length is not secret; an early return on it leaks nothing a caller cannot
188
+ // already see. The byte loop below never short-circuits.
189
+ if (a.length !== b.length) return false
190
+ let diff = 0
191
+ for (let i = 0; i < a.length; i++) diff |= a[i] ^ b[i]
192
+ return diff === 0
193
+ }
@@ -1,5 +1,5 @@
1
1
  import type { Handler, Logger, PortalEnv } from './_lib/types'
2
- import { PBKDF2_ITERATIONS, verifyPasscode } from './_lib/passcode'
2
+ import { verifyPasscode } from './_lib/passcode.mjs'
3
3
  import { checkAndRecordAttempt, clearAttempts, rateScope } from './_lib/ratelimit'
4
4
  import { SESSION_COOKIE, SESSION_TTL_MS, mintSession, passcodeCheck } from './_lib/session'
5
5
  import { q } from './_lib/log'
@@ -17,11 +17,19 @@ interface AuthResult extends Handler {
17
17
  // them would enumerate who is enrolled.
18
18
  const DENIED: Handler = { status: 401, payload: { ok: false, error: 'denied' } }
19
19
 
20
- // A real-shaped salt and hash used only to burn the same PBKDF2 cost when the
21
- // owner does not exist. Without it, an unknown owner returns after one D1 read
22
- // (single-digit ms) while a known one spends ~250ms deriving — a timing oracle
23
- // three orders of magnitude wide, which enumerates the enrolled people outright
24
- // and makes the identical DENIED payload above cosmetic.
20
+ // A real-shaped salt and hash used only to burn the same hash when the owner
21
+ // does not exist, so the two paths cost the same and the identical DENIED
22
+ // payload above is not merely cosmetic.
23
+ //
24
+ // Task 1708 re-measured this after replacing PBKDF2 with one SHA-256, because
25
+ // the gap it closes shrank by four orders of magnitude and the dummy might have
26
+ // stopped earning its place. It did not. Without it the delta is one hash —
27
+ // measured at 43.8us (dev Mac, off-platform) — and published remote-timing work
28
+ // resolves roughly 15-20us on a LAN and ~100us over the internet, so 43.8us sits
29
+ // inside the demonstrated-resolvable band, and an attacker gets to pick a
30
+ // Cloudflare PoP near the target. Keeping it costs 43.8us against a 10ms CPU
31
+ // budget, which is 0.4% of it. Cheap enough not to think about; measurable
32
+ // enough not to remove.
25
33
  const DUMMY_SALT = '00000000000000000000000000000000'
26
34
  const DUMMY_HASH = '0'.repeat(64)
27
35
 
@@ -52,20 +60,18 @@ export async function processAuth(
52
60
  return { status: 429, payload: { ok: false, error: 'too many attempts' } }
53
61
  }
54
62
 
55
- const person = await env.DB.prepare(
56
- 'SELECT ownerId, salt, hash, iterations FROM people WHERE ownerId = ?',
57
- )
63
+ const person = await env.DB.prepare('SELECT ownerId, salt, hash FROM people WHERE ownerId = ?')
58
64
  .bind(ownerId)
59
- .first<{ ownerId: string; salt: string; hash: string; iterations: number }>()
65
+ .first<{ ownerId: string; salt: string; hash: string }>()
60
66
 
61
67
  if (!person) {
62
68
  // Burn the same work an enrolled owner would cost, then deny identically.
63
- await verifyPasscode(passcode, DUMMY_SALT, DUMMY_HASH, PBKDF2_ITERATIONS)
69
+ await verifyPasscode(passcode, DUMMY_SALT, DUMMY_HASH)
64
70
  log(`[data-portal] op=auth owner=${q(ownerId)} result=denied reason=no-such-owner`)
65
71
  return DENIED
66
72
  }
67
73
 
68
- const ok = await verifyPasscode(passcode, person.salt, person.hash, person.iterations)
74
+ const ok = await verifyPasscode(passcode, person.salt, person.hash)
69
75
  if (!ok) {
70
76
  log(`[data-portal] op=auth owner=${q(ownerId)} result=denied reason=bad-passcode`)
71
77
  return DENIED
@@ -4,16 +4,25 @@
4
4
  -- what they have dropped (manifest), and how hard they have been trying
5
5
  -- (auth_attempts). Everything is IF NOT EXISTS so re-applying is safe.
6
6
 
7
- -- One row per enrolled person. No plaintext passcode is ever stored: the skill
8
- -- generates the passcode, shows it to the operator once, and persists only the
9
- -- PBKDF2 salt and hash. `iterations` is stored per row so the cost can be
10
- -- raised later without invalidating existing rows.
7
+ -- One row per enrolled person. No plaintext passcode is ever stored: the
8
+ -- enrolment script generates the passcode, prints it to the operator once, and
9
+ -- persists only the salt and a SHA-256 of salt || passcode.
10
+ --
11
+ -- There is no `iterations` column. Verification is a single fast hash, which is
12
+ -- safe only because passcodes are machine-generated at a pinned length — see the
13
+ -- note at hashPasscode in functions/api/_lib/passcode.mjs. A cost column here
14
+ -- would imply a tunable that does not exist.
15
+ --
16
+ -- `iterations` was dropped outright rather than migrated because no portal had
17
+ -- been deployed when it went (Task 1708). If you meet a `people` table that still
18
+ -- has the column, this file will NOT remove it — IF NOT EXISTS is a no-op on an
19
+ -- existing table — and enrolment's INSERT will fail on `iterations NOT NULL`.
20
+ -- Drop the column by hand in that case; do not add it back here.
11
21
  CREATE TABLE IF NOT EXISTS people (
12
22
  ownerId TEXT PRIMARY KEY,
13
23
  name TEXT NOT NULL,
14
24
  salt TEXT NOT NULL,
15
25
  hash TEXT NOT NULL,
16
- iterations INTEGER NOT NULL,
17
26
  createdAt TEXT NOT NULL
18
27
  );
19
28
 
@@ -59,7 +59,7 @@ Voice mirror introduces five deterministic plugin tools. They write to the graph
59
59
  |------|---------|
60
60
  | `voice-tag-content` | Stamp `authorshipMode ∈ {human-only, human-led-agent-assisted, agent-led-human-reviewed, agent-only, unknown}`, `format ∈ {text, email, social-post, article, note, marketing-copy}`, and `voiceAuthor` on one or many `:KnowledgeDocument | :Message | :SocialPost` nodes (email threads live as `:KnowledgeDocument {source:'email'}`). Bulk-mode for backfill batches. `format` is required. `author` is optional — omit to attribute to the tagging operator. The resolved `voiceAuthor` must name an `:AdminUser` on the calling account or the tag is refused and nothing is written (see [Identity](#identity)). |
61
61
  | `voice-distil-profile` | Three modes, scope-aware (`scope='personal'` default walks one author; `scope='org'` walks the whole account onto the business). `mode='sample'` (default) walks the `human-only` corpus for the given `format`/`scope` and returns exemplars + recent edit intents for the agent to compose a style card; cadence-guarded (≥20% growth or ≥30 days). `mode='amend'` reads only `nodeIds` plus the existing `:VoiceProfile.styleCard` so the agent can decide whether named documents move the profile — operator-initiated, no cadence guard. `mode='write'` persists the YAML card; supply `amendedFromNodeIds` to attribute the write to specific documents (bypasses cadence + corpus walk). Trashed nodes are excluded from every walk. Omit `format` on `'sample'` to enumerate all formats in that scope's corpus and distil each. |
62
- | `voice-retrieve-conditioning` | Return `{styleCard, exemplars[], status}` for a drafting brief. Requires `brief.format` (one of the six corpus formats). `brief.scope` (default `personal`) picks personal vs org voice; a personal request with no personal profile falls back to the org profile (`status='fallback-org'`). K=5 short-form (`brief.length:'short'`), K=15 long-form (`brief.length:'long'`). Token-budget bounded. `status ∈ {ok, fallback-org, no-data, error}`. Identity is not gated here: retrieval writes nothing, and a personal request that resolves no personal voice falls back to the org voice by design. |
62
+ | `voice-retrieve-conditioning` | Return `{styleCard, exemplars[], status}` for a drafting brief. Requires `brief.format` (one of the six corpus formats). `brief.scope` (default `personal`) picks personal vs org voice; a personal request with no personal profile falls back to the org profile (`status='fallback-org'`). K=5 short-form (`brief.length:'short'`), K=15 long-form (`brief.length:'long'`). Token-budget bounded. `brief.topic` is optional and **ranks** the exemplar walk — its terms order the corpus by how many they hit, recency breaks the tie, and a topic that matches nothing still returns the K most recent. `status ∈ {ok, fallback-org, no-data, error}`; `ok` means the query ran, not that exemplars came back — read `exemplars.length` for that. Identity is not gated here: retrieval writes nothing, and a personal request that resolves no personal voice falls back to the org voice by design. |
63
63
  | `voice-record-feedback` | Capture an operator edit on an agent draft as a `:VoiceEdit {format, scope}` with a Haiku-summarised `intent`, linked back to the scoped per-format `:VoiceProfile` via `:FEEDBACK_FOR` (org edits → org profile; editor preserved via `:AUTHORED`). Requires `format`. |
64
64
  | `voice-ingest-session-text` | Write operator turns from the current session as `:Message {format:'text', authorshipMode:'human-only'}` corpus nodes. The agent reads its own operator turns from context and passes them as `turns`. Deduplicates via SHA256 `contentHash`. Invoked on demand by the voice-mirror skill when the operator asks to capture this session's voice. |
65
65
 
@@ -1 +1 @@
1
- {"version":3,"file":"voice-distil-profile.d.ts","sourceRoot":"","sources":["../../src/tools/voice-distil-profile.ts"],"names":[],"mappings":"AA4BA,OAAO,EAML,KAAK,WAAW,EAChB,KAAK,UAAU,EAChB,MAAM,wBAAwB,CAAC;AA8BhC,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;;;;;;;;;;;;OAgBG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;IACpC,+EAA+E;IAC/E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,uFAAuF;IACvF,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,UAAU,CAAC,EACP,iBAAiB,GACjB,QAAQ,GACR,cAAc,GACd,oBAAoB,GACpB,0BAA0B,GAC1B,6BAA6B,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8FAA8F;IAC9F,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAClC,yGAAyG;IACzG,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,mFAAmF;IACnF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,UAAU,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACnD;AA6jBD,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,wBAAwB,GAC/B,OAAO,CAAC,wBAAwB,GAAG,wBAAwB,EAAE,CAAC,CAqHhE"}
1
+ {"version":3,"file":"voice-distil-profile.d.ts","sourceRoot":"","sources":["../../src/tools/voice-distil-profile.ts"],"names":[],"mappings":"AA4BA,OAAO,EAML,KAAK,WAAW,EAChB,KAAK,UAAU,EAChB,MAAM,wBAAwB,CAAC;AAsFhC,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;;;;;;;;;;;;OAgBG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;IACpC,+EAA+E;IAC/E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,uFAAuF;IACvF,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,UAAU,CAAC,EACP,iBAAiB,GACjB,QAAQ,GACR,cAAc,GACd,oBAAoB,GACpB,0BAA0B,GAC1B,6BAA6B,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8FAA8F;IAC9F,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAClC,yGAAyG;IACzG,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,mFAAmF;IACnF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,UAAU,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACnD;AA6nBD,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,wBAAwB,GAC/B,OAAO,CAAC,wBAAwB,GAAG,wBAAwB,EAAE,CAAC,CAqHhE"}
@@ -53,6 +53,46 @@ function toJsNumber(value) {
53
53
  const SAMPLE_CHAR_CAP = 120_000;
54
54
  const RE_RUN_GROWTH_FRACTION = 0.2;
55
55
  const RE_RUN_AGE_DAYS = 30;
56
+ /**
57
+ * The write merged the profile but linked no sources, because no sampled node
58
+ * carried readable text.
59
+ *
60
+ * `VOICE_CORPUS_WHERE` has no body predicate, so a node holding no body,
61
+ * abstract, subject, title or summary still counts toward `corpusSize`, still
62
+ * clears the empty-corpus guard, and is then dropped by the body walk. Reaching
63
+ * this needs nothing deleted: one caption-less `:SocialPost` is enough. It is
64
+ * the reachable half of the zero-record write, which is why it does not share
65
+ * wording with the vanished-samples case below.
66
+ *
67
+ * `walked` and `corpusSize` are reported separately and are not the same number.
68
+ * `corpusSize` counts the whole corpus; the body walk is capped at 500, most
69
+ * recent first. So a zero sample proves only that the walked window held no
70
+ * text, never that the whole corpus does, and the message must not claim it.
71
+ */
72
+ function noSampleTextMessage(profileUserId, format, corpusSize, walked) {
73
+ return (`voice-distil-profile: the ${format} voice profile for '${profileUserId}' was written, but no ` +
74
+ `source links were recorded. The corpus holds ${corpusSize} ${format} item(s) for this key; the ` +
75
+ `write walked ${walked} of them, most recent first, and none carried readable text to sample. ` +
76
+ `The style card was saved with no sources attached. This is a content condition, not an identity one.`);
77
+ }
78
+ /**
79
+ * The write merged the profile but linked no sources, because none of the ids it
80
+ * attempted still resolved. `phase` names the read the ids came from, so the
81
+ * message points at the window they went stale in.
82
+ *
83
+ * Only a hard delete produces this. The write resolves with a bare
84
+ * `MATCH (s) WHERE elementId(s) = sid`, which carries no trash predicate, so a
85
+ * node trashed by either signal `notTrashed` recognises (the `:Trashed` label or
86
+ * a `deletedAt` stamp) still resolves and still takes its edge. Naming trashing
87
+ * here would send the operator to look in a trash that cannot hold the cause.
88
+ */
89
+ function noSourcesResolvedMessage(profileUserId, format, attempted, phase) {
90
+ return (`voice-distil-profile: the ${format} voice profile for '${profileUserId}' was written, but none ` +
91
+ `of the ${attempted} item(s) it sampled could be linked as sources. They stopped resolving ` +
92
+ `between the ${phase} and the write, which happens when content is deleted from the graph ` +
93
+ `mid-run. The style card was saved with no sources attached. This is a content condition, not ` +
94
+ `an identity one.`);
95
+ }
56
96
  // The agent produces a YAML style card with at minimum these keys:
57
97
  // sentenceLengthDistribution, register, favoured, avoided, taboos,
58
98
  // openingPattern, closingPattern, exemplarSentences
@@ -241,10 +281,14 @@ async function distilForFormat(params) {
241
281
  p.feedbackEntries = $feedbackEntries,
242
282
  p.updatedAt = $now
243
283
  WITH p
244
- UNWIND $sampleIds AS sid
245
- MATCH (s) WHERE elementId(s) = sid
246
- MERGE (p)-[:LEARNED_FROM]->(s)
247
- RETURN elementId(p) AS profileId`, {
284
+ CALL {
285
+ WITH p
286
+ UNWIND $sampleIds AS sid
287
+ MATCH (s) WHERE elementId(s) = sid
288
+ MERGE (p)-[:LEARNED_FROM]->(s)
289
+ RETURN count(*) AS learned
290
+ }
291
+ RETURN elementId(p) AS profileId, learned`, {
248
292
  accountId,
249
293
  profileUserId,
250
294
  format,
@@ -255,12 +299,38 @@ async function distilForFormat(params) {
255
299
  feedbackEntries: feedbackIntents.length,
256
300
  sampleIds: samples.map((s) => s.id),
257
301
  });
302
+ // Zero records now means only that the anchor MATCH found nothing. The
303
+ // sample link sits in a CALL subquery whose bare aggregation returns a row
304
+ // over empty input, so an empty or all-stale sample set no longer collapses
305
+ // the result and no longer reads as an identity failure.
258
306
  if (writeResult.records.length === 0) {
259
307
  throw new Error(scope === "org"
260
308
  ? `voice-mirror: :LocalBusiness {accountId='${accountId}'} not found. The account org node must exist before an org distil (created at onboarding alongside :AdminUser).`
261
309
  : unknownAdminUserMessage("voice-distil-profile", profileUserId, accountId));
262
310
  }
263
311
  const profileId = writeResult.records[0].get("profileId");
312
+ // Only the zero test is load-bearing. `count(*)` counts subquery rows, not
313
+ // distinct nodes, so a duplicated id would inflate it above the edge count
314
+ // that MERGE actually wrote. Never surface this as a source count without
315
+ // switching it to count(DISTINCT s).
316
+ const learned = toJsNumber(writeResult.records[0].get("learned")) ?? 0;
317
+ // The profile merged and the style card committed; only the source links
318
+ // are missing. Which of the two causes applies is decided by how many ids
319
+ // the write actually attempted, never by the anchor.
320
+ if (learned === 0) {
321
+ const attempted = samples.length;
322
+ // `sampled` is capped at 500, so it can be smaller than corpusSize. Both
323
+ // are logged: attempted=0 with sampled<corpusSize means the walked window
324
+ // held no text, which is not the same claim as the whole corpus holding
325
+ // none.
326
+ const walked = sampled.records.length;
327
+ process.stderr.write(`[voice-distil] scope=${scope} userId=${profileUserId} anchor=${anchorLabel} format=${format} ` +
328
+ `mode=write sources=none attempted=${attempted} resolved=0 sampled=${walked} ` +
329
+ `corpusSize=${corpusSize}\n`);
330
+ throw new Error(attempted === 0
331
+ ? noSampleTextMessage(profileUserId, format, corpusSize, walked)
332
+ : noSourcesResolvedMessage(profileUserId, format, attempted, "corpus walk"));
333
+ }
264
334
  process.stderr.write(`[voice-distil] scope=${scope} userId=${profileUserId} anchor=${anchorLabel} format=${format} corpusSize=${corpusSize} generatedAt=${nowIso} feedbackEntries=${feedbackIntents.length}${scope === "org" ? " sentinel=__org__" : ""}\n`);
265
335
  return {
266
336
  profileId,
@@ -486,11 +556,14 @@ async function amendWriteForFormat(params) {
486
556
  p.feedbackEntries = $feedbackEntries,
487
557
  p.updatedAt = $now
488
558
  WITH p
489
- UNWIND $amendIds AS sid
490
- MATCH (s) WHERE elementId(s) = sid
491
- MERGE (p)-[:LEARNED_FROM]->(s)
492
- WITH p
493
- RETURN elementId(p) AS profileId, p.corpusSize AS corpusSize`, {
559
+ CALL {
560
+ WITH p
561
+ UNWIND $amendIds AS sid
562
+ MATCH (s) WHERE elementId(s) = sid
563
+ MERGE (p)-[:LEARNED_FROM]->(s)
564
+ RETURN count(*) AS learned
565
+ }
566
+ RETURN elementId(p) AS profileId, p.corpusSize AS corpusSize, learned`, {
494
567
  accountId,
495
568
  profileUserId,
496
569
  format,
@@ -500,6 +573,8 @@ async function amendWriteForFormat(params) {
500
573
  feedbackEntries,
501
574
  amendIds: resolvedAmendIds,
502
575
  });
576
+ // As in distilForFormat: zero records now means only that the anchor MATCH
577
+ // found nothing.
503
578
  if (result.records.length === 0) {
504
579
  throw new Error(scope === "org"
505
580
  ? `voice-mirror: :LocalBusiness {accountId='${accountId}'} not found. The account org node must exist before an org amend-write.`
@@ -507,6 +582,20 @@ async function amendWriteForFormat(params) {
507
582
  }
508
583
  const profileId = result.records[0].get("profileId");
509
584
  const corpusSize = toJsNumber(result.records[0].get("corpusSize")) ?? 0;
585
+ const learned = toJsNumber(result.records[0].get("learned")) ?? 0;
586
+ // `amendIds` is the pre-resolved list and the step-1 guard already refused
587
+ // an empty one, so a zero here is always a mid-call race, never an empty
588
+ // input. That is why this path has no empty-sample wording: it cannot reach
589
+ // it.
590
+ //
591
+ // The window named is the step-1 resolve, not the operator's earlier
592
+ // eligibility check. Step 1 proved these ids live milliseconds ago in this
593
+ // same call, so that is the window they died in and the one worth naming.
594
+ if (learned === 0) {
595
+ process.stderr.write(`[voice-distil] scope=${scope} mode=write userId=${profileUserId} anchor=${anchorLabel} ` +
596
+ `format=${format} amended=true sources=none attempted=${resolvedAmendIds.length} resolved=0\n`);
597
+ throw new Error(noSourcesResolvedMessage(profileUserId, format, resolvedAmendIds.length, "id resolve"));
598
+ }
510
599
  process.stderr.write(`[voice-distil] scope=${scope} mode=write userId=${profileUserId} anchor=${anchorLabel} format=${format} amended=true ` +
511
600
  `amendedFromNodeIds=${amendedFromNodeIds.length} corpusSize=${corpusSize} ` +
512
601
  `generatedAt=${nowIso} feedbackEntries=${feedbackEntries}\n`);
@@ -1 +1 @@
1
- {"version":3,"file":"voice-distil-profile.js","sourceRoot":"","sources":["../../src/tools/voice-distil-profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"voice-distil-profile.js","sourceRoot":"","sources":["../../src/tools/voice-distil-profile.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"voice-retrieve-conditioning.d.ts","sourceRoot":"","sources":["../../src/tools/voice-retrieve-conditioning.ts"],"names":[],"mappings":"AA+BA,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,UAAU,EAChB,MAAM,wBAAwB,CAAC;AAMhC,MAAM,WAAW,+BAA+B;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE;QACL,KAAK,CAAC,EAAE,MAAM,CAAC;QACf;;;WAGG;QACH,MAAM,EAAE,WAAW,CAAC;QACpB;;;;WAIG;QACH,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;QAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB;;;;;WAKG;QACH,KAAK,CAAC,EAAE,UAAU,CAAC;KACpB,CAAC;IACF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,mBAAmB,GAAG,IAAI,GAAG,cAAc,GAAG,SAAS,GAAG,OAAO,CAAC;AAE9E,MAAM,WAAW,+BAA+B;IAC9C,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,+BAA+B,GACtC,OAAO,CAAC,+BAA+B,CAAC,CA8J1C"}
1
+ {"version":3,"file":"voice-retrieve-conditioning.d.ts","sourceRoot":"","sources":["../../src/tools/voice-retrieve-conditioning.ts"],"names":[],"mappings":"AAwCA,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,UAAU,EAChB,MAAM,wBAAwB,CAAC;AAMhC,MAAM,WAAW,+BAA+B;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE;QACL,KAAK,CAAC,EAAE,MAAM,CAAC;QACf;;;WAGG;QACH,MAAM,EAAE,WAAW,CAAC;QACpB;;;;WAIG;QACH,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;QAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB;;;;;WAKG;QACH,KAAK,CAAC,EAAE,UAAU,CAAC;KACpB,CAAC;IACF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,mBAAmB,GAAG,IAAI,GAAG,cAAc,GAAG,SAAS,GAAG,OAAO,CAAC;AAE9E,MAAM,WAAW,+BAA+B;IAC9C,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAgBD,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,+BAA+B,GACtC,OAAO,CAAC,+BAA+B,CAAC,CAuL1C"}