@corenel/ui-kit 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"languages.d.ts","sourceRoot":"","sources":["../languages.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,KAAK,MAAM,MAAM,wCAAwC,CAAC;AAEtE;;;sDAGsD;AACtD,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;CAC9D;AAED,MAAM,WAAW,iBAAiB;IAChC,uCAAuC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,iDAAiD;IACjD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB;uDACmD;IACnD,QAAQ,CAAC,MAAM,EAAE,OAAO,MAAM,GAAG,IAAI,CAAC;IACtC,uDAAuD;IACvD,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAKD,uFAAuF;AACvF,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAEtE;AAED,0CAA0C;AAC1C,wBAAgB,kBAAkB,IAAI,iBAAiB,EAAE,CAExD;AAED,uEAAuE;AACvE,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAE3E;AAED,+EAA+E;AAC/E,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,OAAO,MAAM,GAAG,IAAI,CAMrE"}
1
+ {"version":3,"file":"languages.d.ts","sourceRoot":"","sources":["../languages.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,KAAK,MAAM,MAAM,wCAAwC,CAAC;AAEtE;;;sDAGsD;AACtD,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;CAC9D;AAED,MAAM,WAAW,iBAAiB;IAChC,uCAAuC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,iDAAiD;IACjD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB;+DAC2D;IAC3D,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;uDACmD;IACnD,QAAQ,CAAC,MAAM,EAAE,OAAO,MAAM,GAAG,IAAI,CAAC;IACtC,uDAAuD;IACvD,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAKD,uFAAuF;AACvF,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAEtE;AAED,0CAA0C;AAC1C,wBAAgB,kBAAkB,IAAI,iBAAiB,EAAE,CAExD;AAED,uEAAuE;AACvE,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAE3E;AAED;;wEAEwE;AACxE,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQtE;AAED,+EAA+E;AAC/E,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,OAAO,MAAM,GAAG,IAAI,CAMrE;AAED,sDAAsD;AACtD,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C"}
package/dist/languages.js CHANGED
@@ -12,6 +12,19 @@ export function languageExtensions() {
12
12
  export function languageExtension(id) {
13
13
  return registry.get(id);
14
14
  }
15
+ /** The language id claiming a file extension (lowercase, no leading dot), or
16
+ * undefined. Plain metadata scan — safe from monaco-free callers (langForPath,
17
+ * the file-open gate); the registry never imports monaco at runtime. */
18
+ export function languageIdForExtension(ext) {
19
+ const e = ext.toLowerCase();
20
+ for (const x of registry.values()) {
21
+ for (const claimed of x.extensions) {
22
+ if ((claimed.startsWith('.') ? claimed.slice(1) : claimed).toLowerCase() === e)
23
+ return x.id;
24
+ }
25
+ }
26
+ return undefined;
27
+ }
15
28
  /** Install every registered language extension against `monaco`, once each. */
16
29
  export function ensureLanguagesRegistered(monaco) {
17
30
  for (const ext of registry.values()) {
@@ -26,4 +39,9 @@ export function ensureLanguagesRegistered(monaco) {
26
39
  }
27
40
  }
28
41
  }
42
+ /** Test-only reset of the registry's module state. */
43
+ export function clearLanguageExtensions() {
44
+ registry.clear();
45
+ installed.clear();
46
+ }
29
47
  //# sourceMappingURL=languages.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"languages.js","sourceRoot":"","sources":["../languages.ts"],"names":[],"mappings":"AA8BA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA6B,CAAC;AACtD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;AAEpC,uFAAuF;AACvF,MAAM,UAAU,yBAAyB,CAAC,GAAsB;IAC9D,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,kBAAkB;IAChC,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AAChC,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,iBAAiB,CAAC,EAAU;IAC1C,OAAO,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,yBAAyB,CAAC,MAAqB;IAC7D,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACpC,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,SAAS;QACpC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtB,IAAI,CAAC;YAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAAC,CAAC;IACnE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"languages.js","sourceRoot":"","sources":["../languages.ts"],"names":[],"mappings":"AAkCA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA6B,CAAC;AACtD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;AAEpC,uFAAuF;AACvF,MAAM,UAAU,yBAAyB,CAAC,GAAsB;IAC9D,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,kBAAkB;IAChC,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AAChC,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,iBAAiB,CAAC,EAAU;IAC1C,OAAO,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED;;wEAEwE;AACxE,MAAM,UAAU,sBAAsB,CAAC,GAAW;IAChD,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QAClC,KAAK,MAAM,OAAO,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC;gBAAE,OAAO,CAAC,CAAC,EAAE,CAAC;QAC9F,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,yBAAyB,CAAC,MAAqB;IAC7D,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACpC,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,SAAS;QACpC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtB,IAAI,CAAC;YAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,uBAAuB;IACrC,QAAQ,CAAC,KAAK,EAAE,CAAC;IAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AACtC,CAAC"}
@@ -1,5 +1,4 @@
1
- /** Resolve a fence tag to a supported Monaco language id, or null if unsupported.
2
- * Supported ids are exactly the LOADERS keys (defined below; read at call time). */
1
+ /** Resolve a fence tag to a supported Monaco language id, or null if unsupported. */
3
2
  export declare function monacoLangId(lang: string): string | null;
4
3
  /** Highlight `code` as `lang` via Monaco, returning themed HTML (with `.mtkN`
5
4
  * token spans), or null when the language is unsupported or tokenization fails. */
@@ -1 +1 @@
1
- {"version":3,"file":"monacoColorize.d.ts","sourceRoot":"","sources":["../monacoColorize.ts"],"names":[],"mappings":"AA4CA;oFACoF;AACpF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKxD;AA6ED;mFACmF;AACnF,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAYvF"}
1
+ {"version":3,"file":"monacoColorize.d.ts","sourceRoot":"","sources":["../monacoColorize.ts"],"names":[],"mappings":"AAoCA,qFAAqF;AACrF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGxD;AA6BD;mFACmF;AACnF,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWvF"}
@@ -2,122 +2,62 @@
2
2
  *
3
3
  * Uses monaco.editor.colorize() — the Monarch tokenizer rendered to an HTML
4
4
  * string — so code blocks highlight with the SAME engine and theme as the
5
- * document editor (no second highlighter to drift). It pulls only the lightweight
6
- * basic-language TOKENIZERS, not the heavy TS/CSS/HTML language *services* +
7
- * workers that lib/monaco.ts deliberately omits.
5
+ * document editor (no second highlighter to drift). Which languages exist and
6
+ * how fence tags resolve comes from the basic-language pack (basicLanguages.ts)
7
+ * the same single table the editor's langForPath and monaco registration
8
+ * use, so the two surfaces cannot drift. Grammar bodies stay lazy per-language
9
+ * chunks behind registerTokensProviderFactory; colorize() awaits the factory,
10
+ * so the first block of a language fetches its grammar and later ones hit the
11
+ * registry.
8
12
  *
9
- * Lazy: Monaco + the tokenizers load on the first colorize call, so a transcript
13
+ * Lazy: Monaco + the pack install on the first colorize call, so a transcript
10
14
  * with no code blocks never pulls them in. Callers keep their own synchronous
11
15
  * highlighter as the immediate render and swap in this result when it resolves
12
16
  * (progressive enhancement); unsupported languages return null and the fallback
13
17
  * stays.
14
18
  *
15
- * Colors come from the app's global Monaco theme (PRMD_THEME_*, which inherit
16
- * vs/vs-dark) via the global `.monaco-colors` stylesheet Monaco injects the
17
- * `.mtkN` classes colorize() emits are styled there, not scoped to an editor.
19
+ * Colors come from whichever editor theme(s) the host has registered via
20
+ * setEditorThemes/editorThemes() (ui-kit theme.ts) this module only knows the
21
+ * light/dark theme ids, not their content applied through the global
22
+ * `.monaco-colors` stylesheet Monaco injects, so the `.mtkN` classes colorize()
23
+ * emits are styled there, not scoped to an editor.
18
24
  */
19
- import { getTheme } from './theme';
25
+ import { getTheme, editorThemes } from './theme';
26
+ import { fenceLanguageId } from './basicLanguages';
27
+ import { ensureLanguagesRegistered } from './languages';
20
28
  // IMPORTANT: nothing monaco-related is imported statically. This module is reached
21
- // from the always-loaded chat/output renderers, so a static `monaco-editor` (or
22
- // prmdLanguage, which imports it) import would pull all of Monaco into the main
23
- // bundle. Every monaco import below is dynamic, inside ensureMonaco — Monaco loads
24
- // on the first colorize call and shares the editor's lazy chunk.
25
- // Fence tag -> Monaco language id. js/jsx use the javascript tokenizer, ts/tsx the
26
- // typescript one (both handle JSX/TSX syntax in their Monarch grammar).
27
- const ALIAS = {
28
- js: 'javascript', jsx: 'javascript', mjs: 'javascript', cjs: 'javascript', node: 'javascript',
29
- ts: 'typescript', tsx: 'typescript',
30
- py: 'python', py3: 'python',
31
- sh: 'shell', bash: 'shell', zsh: 'shell', console: 'shell',
32
- yml: 'yaml', md: 'markdown', markdown: 'markdown',
33
- htm: 'html', svg: 'xml',
34
- rs: 'rust', golang: 'go', kt: 'kotlin', kts: 'kotlin',
35
- cs: 'csharp', 'c#': 'csharp', 'c++': 'cpp', cc: 'cpp', cxx: 'cpp', h: 'cpp', hpp: 'cpp', c: 'cpp',
36
- rb: 'ruby', ps1: 'powershell', ps: 'powershell',
37
- docker: 'dockerfile', gql: 'graphql', objc: 'objective-c', 'obj-c': 'objective-c',
38
- rlang: 'r', pl: 'perl',
39
- };
40
- /** Resolve a fence tag to a supported Monaco language id, or null if unsupported.
41
- * Supported ids are exactly the LOADERS keys (defined below; read at call time). */
29
+ // from the always-loaded chat/output renderers, so a static `monaco-editor` import
30
+ // would pull all of Monaco into the main bundle. basicLanguages/languages are
31
+ // runtime-monaco-free (type-only imports); Monaco itself loads inside ensureMonaco
32
+ // on the first colorize call.
33
+ /** Resolve a fence tag to a supported Monaco language id, or null if unsupported. */
42
34
  export function monacoLangId(lang) {
43
35
  const l = (lang || '').trim().toLowerCase();
44
- if (!l)
45
- return null;
46
- const id = ALIAS[l] || l;
47
- return id in LOADERS ? id : null;
36
+ return l ? fenceLanguageId(l) : null;
48
37
  }
49
- // Per-language tokenizer loaders (literal paths so Vite splits each into its own
50
- // tiny chunk). Only the language a code block actually uses is fetched — a JS
51
- // block never pulls the Rust grammar. Keys are Monaco language ids.
52
- const LOADERS = {
53
- typescript: () => import('monaco-editor/esm/vs/basic-languages/typescript/typescript.contribution'),
54
- javascript: () => import('monaco-editor/esm/vs/basic-languages/javascript/javascript.contribution'),
55
- python: () => import('monaco-editor/esm/vs/basic-languages/python/python.contribution'),
56
- css: () => import('monaco-editor/esm/vs/basic-languages/css/css.contribution'),
57
- scss: () => import('monaco-editor/esm/vs/basic-languages/scss/scss.contribution'),
58
- less: () => import('monaco-editor/esm/vs/basic-languages/less/less.contribution'),
59
- html: () => import('monaco-editor/esm/vs/basic-languages/html/html.contribution'),
60
- xml: () => import('monaco-editor/esm/vs/basic-languages/xml/xml.contribution'),
61
- shell: () => import('monaco-editor/esm/vs/basic-languages/shell/shell.contribution'),
62
- yaml: () => import('monaco-editor/esm/vs/basic-languages/yaml/yaml.contribution'),
63
- markdown: () => import('monaco-editor/esm/vs/basic-languages/markdown/markdown.contribution'),
64
- sql: () => import('monaco-editor/esm/vs/basic-languages/sql/sql.contribution'),
65
- rust: () => import('monaco-editor/esm/vs/basic-languages/rust/rust.contribution'),
66
- go: () => import('monaco-editor/esm/vs/basic-languages/go/go.contribution'),
67
- java: () => import('monaco-editor/esm/vs/basic-languages/java/java.contribution'),
68
- cpp: () => import('monaco-editor/esm/vs/basic-languages/cpp/cpp.contribution'),
69
- csharp: () => import('monaco-editor/esm/vs/basic-languages/csharp/csharp.contribution'),
70
- ruby: () => import('monaco-editor/esm/vs/basic-languages/ruby/ruby.contribution'),
71
- php: () => import('monaco-editor/esm/vs/basic-languages/php/php.contribution'),
72
- kotlin: () => import('monaco-editor/esm/vs/basic-languages/kotlin/kotlin.contribution'),
73
- swift: () => import('monaco-editor/esm/vs/basic-languages/swift/swift.contribution'),
74
- powershell: () => import('monaco-editor/esm/vs/basic-languages/powershell/powershell.contribution'),
75
- dockerfile: () => import('monaco-editor/esm/vs/basic-languages/dockerfile/dockerfile.contribution'),
76
- graphql: () => import('monaco-editor/esm/vs/basic-languages/graphql/graphql.contribution'),
77
- ini: () => import('monaco-editor/esm/vs/basic-languages/ini/ini.contribution'),
78
- lua: () => import('monaco-editor/esm/vs/basic-languages/lua/lua.contribution'),
79
- r: () => import('monaco-editor/esm/vs/basic-languages/r/r.contribution'),
80
- perl: () => import('monaco-editor/esm/vs/basic-languages/perl/perl.contribution'),
81
- scala: () => import('monaco-editor/esm/vs/basic-languages/scala/scala.contribution'),
82
- dart: () => import('monaco-editor/esm/vs/basic-languages/dart/dart.contribution'),
83
- 'objective-c': () => import('monaco-editor/esm/vs/basic-languages/objective-c/objective-c.contribution'),
84
- // json's tokenizer is already registered by lib/monaco.ts; no loader needed.
85
- json: () => Promise.resolve(),
86
- };
87
38
  let monacoP = null;
88
39
  async function ensureMonaco() {
89
40
  if (!monacoP) {
90
- monacoP = (async () => {
91
- const monaco = await import('monaco-editor/esm/vs/editor/editor.api');
92
- // prmdLanguage statically imports monaco — keep it dynamic too. It registers
93
- // PRMD_THEME_* (token colors inherit vs/vs-dark) and is idempotent.
94
- const prmd = await import('./prmdLanguage');
95
- prmd.ensurePrmdLanguage();
96
- themeLight = prmd.PRMD_THEME_LIGHT;
97
- themeDark = prmd.PRMD_THEME_DARK;
98
- return monaco;
99
- })();
100
- }
101
- return monacoP;
102
- }
103
- const langP = new Map();
104
- function ensureLanguage(id) {
105
- let p = langP.get(id);
106
- if (!p) {
107
- p = (LOADERS[id] || (() => Promise.resolve()))();
108
- langP.set(id, p);
41
+ monacoP = import('monaco-editor/esm/vs/editor/editor.api');
109
42
  }
110
- return p;
43
+ const monaco = await monacoP;
44
+ // Install every registered language extension against this monaco instance.
45
+ // Deliberately OUTSIDE the `if (!monacoP)` gate (and so re-run on every call,
46
+ // not just the first): ensureLanguagesRegistered is idempotent per language id,
47
+ // but a host can register a language (e.g. the app's registerPrmdLanguage())
48
+ // any time relative to this module's first colorize() call — calling it only
49
+ // once, inside the memo, would strand later-registered languages unresolved
50
+ // for the lifetime of the session. Running it here every time self-heals
51
+ // regardless of registration order.
52
+ ensureLanguagesRegistered(monaco);
53
+ return monaco;
111
54
  }
112
55
  // The global Monaco theme is shared with mounted editors; only push a change when
113
56
  // the app theme actually flips (avoids re-theming mounted editors per code block).
114
- // Theme ids are captured from prmdLanguage during ensureMonaco (defaults match its
115
- // exported constants) so nothing monaco-related is imported statically.
116
- let themeLight = 'prompd-light';
117
- let themeDark = 'prompd-dark';
118
57
  let appliedTheme = '';
119
58
  function syncTheme(monaco) {
120
- const id = getTheme() === 'light' ? themeLight : themeDark;
59
+ const t = editorThemes();
60
+ const id = getTheme() === 'light' ? t.light : t.dark;
121
61
  if (id !== appliedTheme) {
122
62
  monaco.editor.setTheme(id);
123
63
  appliedTheme = id;
@@ -130,7 +70,6 @@ export async function colorizeToHtml(code, lang) {
130
70
  if (!id)
131
71
  return null;
132
72
  const monaco = await ensureMonaco();
133
- await ensureLanguage(id);
134
73
  syncTheme(monaco);
135
74
  try {
136
75
  const html = await monaco.editor.colorize(code, id, { tabSize: 2 });
@@ -1 +1 @@
1
- {"version":3,"file":"monacoColorize.js","sourceRoot":"","sources":["../monacoColorize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"monacoColorize.js","sourceRoot":"","sources":["../monacoColorize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAIxD,mFAAmF;AACnF,mFAAmF;AACnF,8EAA8E;AAC9E,mFAAmF;AACnF,8BAA8B;AAE9B,qFAAqF;AACrF,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5C,OAAO,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvC,CAAC;AAED,IAAI,OAAO,GAA8B,IAAI,CAAC;AAC9C,KAAK,UAAU,YAAY;IACzB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,MAAM,CAAC,wCAAwC,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;IAC7B,4EAA4E;IAC5E,8EAA8E;IAC9E,gFAAgF;IAChF,6EAA6E;IAC7E,6EAA6E;IAC7E,4EAA4E;IAC5E,yEAAyE;IACzE,oCAAoC;IACpC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,kFAAkF;AAClF,mFAAmF;AACnF,IAAI,YAAY,GAAG,EAAE,CAAC;AACtB,SAAS,SAAS,CAAC,MAAiB;IAClC,MAAM,CAAC,GAAG,YAAY,EAAE,CAAC;IACzB,MAAM,EAAE,GAAG,QAAQ,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrD,IAAI,EAAE,KAAK,YAAY,EAAE,CAAC;QAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAAC,YAAY,GAAG,EAAE,CAAC;IAAC,CAAC;AAC7E,CAAC;AAED;mFACmF;AACnF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,IAAY;IAC7D,MAAM,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IACrB,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;IACpC,SAAS,CAAC,MAAM,CAAC,CAAC;IAClB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACpE,OAAO,IAAI,IAAI,IAAI,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
package/dist/theme.d.ts CHANGED
@@ -1,6 +1,15 @@
1
+ /** Resolved palette actually applied to <html>. */
1
2
  export type Theme = 'dark' | 'light';
3
+ /** Stored user preference; 'system' follows the OS via prefers-color-scheme. */
4
+ export type ThemePref = Theme | 'system';
5
+ /** The stored preference (may be 'system'). Defaults to 'dark'. */
6
+ export declare function getThemePref(): ThemePref;
7
+ /** The resolved palette ('system' -> current OS preference). Consumers that
8
+ * paint to dark/light want this; it reacts to the prompd:theme-changed event. */
2
9
  export declare function getTheme(): Theme;
3
10
  export declare function applyTheme(t: Theme): void;
11
+ export declare function setThemePref(p: ThemePref): void;
12
+ /** @deprecated Back-compat alias for {@link setThemePref}. */
4
13
  export declare function setTheme(t: Theme): void;
5
14
  export declare function initTheme(): void;
6
15
  export type EditorControls = 'auto' | 'labels' | 'icons';
@@ -12,4 +21,11 @@ export declare function getCompression(): CompressionMode;
12
21
  export declare function setCompression(v: CompressionMode): void;
13
22
  export declare function getShowHelp(): boolean;
14
23
  export declare function setShowHelp(v: boolean): void;
24
+ export interface EditorThemes {
25
+ light: string;
26
+ dark: string;
27
+ }
28
+ export declare function setEditorThemes(t: EditorThemes): void;
29
+ /** A copy — callers must not be able to mutate the stored value. */
30
+ export declare function editorThemes(): EditorThemes;
15
31
  //# sourceMappingURL=theme.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../theme.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAGrC,wBAAgB,QAAQ,IAAI,KAAK,CAEhC;AACD,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAEzC;AACD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAKvC;AACD,wBAAgB,SAAS,IAAI,IAAI,CAGhC;AAKD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAGzD,wBAAgB,iBAAiB,IAAI,cAAc,CAKlD;AACD,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,cAAc,GAAG,IAAI,CAE3D;AACD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,cAAc,GAAG,IAAI,CAGzD;AAID,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,wBAAgB,cAAc,IAAI,eAAe,CAKhD;AACD,wBAAgB,cAAc,CAAC,CAAC,EAAE,eAAe,GAAG,IAAI,CAEvD;AAID,wBAAgB,WAAW,IAAI,OAAO,CAErC;AACD,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAE5C"}
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../theme.ts"],"names":[],"mappings":"AAGA,mDAAmD;AACnD,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AACrC,gFAAgF;AAChF,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAC;AASzC,mEAAmE;AACnE,wBAAgB,YAAY,IAAI,SAAS,CAKxC;AACD;iFACiF;AACjF,wBAAgB,QAAQ,IAAI,KAAK,CAGhC;AACD,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAEzC;AACD,wBAAgB,YAAY,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI,CAK/C;AACD,8DAA8D;AAC9D,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAqB;AAC7D,wBAAgB,SAAS,IAAI,IAAI,CAWhC;AAKD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAGzD,wBAAgB,iBAAiB,IAAI,cAAc,CAKlD;AACD,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,cAAc,GAAG,IAAI,CAE3D;AACD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,cAAc,GAAG,IAAI,CAGzD;AAID,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,wBAAgB,cAAc,IAAI,eAAe,CAKhD;AACD,wBAAgB,cAAc,CAAC,CAAC,EAAE,eAAe,GAAG,IAAI,CAEvD;AAID,wBAAgB,WAAW,IAAI,OAAO,CAErC;AACD,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAE5C;AAOD,MAAM,WAAW,YAAY;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAI7D,wBAAgB,eAAe,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI,CAErD;AAED,oEAAoE;AACpE,wBAAgB,YAAY,IAAI,YAAY,CAE3C"}
package/dist/theme.js CHANGED
@@ -1,29 +1,60 @@
1
1
  const LS = 'prompd.web.theme';
2
- export function getTheme() {
2
+ function systemTheme() {
3
+ try {
4
+ return typeof window !== 'undefined' && window.matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark';
5
+ }
6
+ catch {
7
+ return 'dark';
8
+ }
9
+ }
10
+ /** The stored preference (may be 'system'). Defaults to 'dark'. */
11
+ export function getThemePref() {
3
12
  try {
4
- return localStorage.getItem(LS) === 'light' ? 'light' : 'dark';
13
+ const v = localStorage.getItem(LS);
14
+ return v === 'light' || v === 'system' ? v : 'dark';
5
15
  }
6
16
  catch {
7
17
  return 'dark';
8
18
  }
9
19
  }
20
+ /** The resolved palette ('system' -> current OS preference). Consumers that
21
+ * paint to dark/light want this; it reacts to the prompd:theme-changed event. */
22
+ export function getTheme() {
23
+ const p = getThemePref();
24
+ return p === 'system' ? systemTheme() : p;
25
+ }
10
26
  export function applyTheme(t) {
11
27
  document.documentElement.dataset.theme = t;
12
28
  }
13
- export function setTheme(t) {
29
+ export function setThemePref(p) {
14
30
  try {
15
- localStorage.setItem(LS, t);
31
+ localStorage.setItem(LS, p);
16
32
  }
17
33
  catch { /* ignore */ }
18
- applyTheme(t);
34
+ applyTheme(getTheme());
19
35
  // Let theme-sensitive UI (e.g. the file-tree's light/dark icon variants) react.
20
36
  try {
21
37
  window.dispatchEvent(new Event('prompd:theme-changed'));
22
38
  }
23
39
  catch { /* SSR/no-window */ }
24
40
  }
41
+ /** @deprecated Back-compat alias for {@link setThemePref}. */
42
+ export function setTheme(t) { setThemePref(t); }
25
43
  export function initTheme() {
26
44
  applyTheme(getTheme());
45
+ // While the preference is 'system', track OS light/dark changes live.
46
+ try {
47
+ window.matchMedia('(prefers-color-scheme: light)').addEventListener('change', () => {
48
+ if (getThemePref() !== 'system')
49
+ return;
50
+ applyTheme(getTheme());
51
+ try {
52
+ window.dispatchEvent(new Event('prompd:theme-changed'));
53
+ }
54
+ catch { /* SSR/no-window */ }
55
+ });
56
+ }
57
+ catch { /* SSR/no-window or unsupported */ }
27
58
  applyEditorControls(getEditorControls());
28
59
  }
29
60
  const LS_EC = 'prompd.web.editorControls';
@@ -78,4 +109,12 @@ export function setShowHelp(v) {
78
109
  }
79
110
  catch { /* ignore */ }
80
111
  }
112
+ let editorThemeIds = { light: 'vs', dark: 'vs-dark' };
113
+ export function setEditorThemes(t) {
114
+ editorThemeIds = { light: t.light, dark: t.dark };
115
+ }
116
+ /** A copy — callers must not be able to mutate the stored value. */
117
+ export function editorThemes() {
118
+ return { ...editorThemeIds };
119
+ }
81
120
  //# sourceMappingURL=theme.js.map
package/dist/theme.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"theme.js","sourceRoot":"","sources":["../theme.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../theme.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,14 @@
1
1
  export declare function mdToHtml(md: string): string;
2
+ /** Max chars fed to the BPE per count. estimateTokens runs on render paths (the
3
+ * context drawer counts every turn, the composer counts the draft), so a count
4
+ * must stay bounded even for multi-MB inline tool outputs: beyond the cap we
5
+ * encode a sample and extrapolate by length. Exact for anything under 64 KB. */
6
+ export declare const BPE_SAMPLE_CAP = 65536;
2
7
  export declare function estimateTokens(s: string): number;
8
+ /** Identity of the active counter (0 = chars/4 heuristic, 1 = exact BPE). Callers
9
+ * that cache counts keyed on input identity compare this to know when to re-count. */
10
+ export declare function tokenCountsVersion(): number;
11
+ /** Upgrade estimateTokens to exact BPE counts (idempotent, failure-tolerant). */
12
+ export declare function enableAccurateTokenCounts(): Promise<void>;
3
13
  export declare function highlightPrmd(source: string): string;
4
14
  //# sourceMappingURL=ui-helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ui-helpers.d.ts","sourceRoot":"","sources":["../ui-helpers.ts"],"names":[],"mappings":"AAwCA,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAwC3C;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhD;AAwBD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CA6BpD"}
1
+ {"version":3,"file":"ui-helpers.d.ts","sourceRoot":"","sources":["../ui-helpers.ts"],"names":[],"mappings":"AAqDA,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CA8D3C;AAWD;;;gFAGgF;AAChF,eAAO,MAAM,cAAc,QAAQ,CAAC;AAEpC,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAUhD;AAED;sFACsF;AACtF,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAGD,iFAAiF;AACjF,wBAAgB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CAKzD;AAwBD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CA6BpD"}
@@ -16,8 +16,10 @@
16
16
  function safeHref(raw) {
17
17
  const u = raw.replace(/[\u0000-\u0020\u007F]+/g, '');
18
18
  const scheme = /^([a-z][a-z0-9+.-]*):/i.exec(u);
19
+ // `prompd:` is the in-app action scheme (e.g. prompd:new-file): safe to render —
20
+ // the browser no-ops the unknown scheme and the app intercepts the click.
19
21
  if (scheme)
20
- return /^(https?|mailto|tel)$/i.test(scheme[1]) ? u : null;
22
+ return /^(https?|mailto|tel|prompd)$/i.test(scheme[1]) ? u : null;
21
23
  return u; // no scheme -> relative path/anchor/query, safe
22
24
  }
23
25
  function inlineMd(s) {
@@ -35,12 +37,43 @@ function inlineMd(s) {
35
37
  : text;
36
38
  });
37
39
  }
40
+ /** GFM table delimiter row: `| --- | :---: | ---: |` (leading/trailing pipes
41
+ * optional, 1+ dashes per spec-in-practice). Alignment comes from the colons. */
42
+ const TABLE_DELIM_RE = /^\s*\|?\s*:?-+:?\s*(\|\s*:?-+:?\s*)*\|?\s*$/;
43
+ /** Split one table row into cells: strip the outer pipes, split on unescaped
44
+ * `|`, and unescape `\|` back to a literal pipe inside a cell. */
45
+ function tableCells(row) {
46
+ const s = row.trim().replace(/^\|/, '').replace(/(?<!\\)\|$/, '');
47
+ return s.split(/(?<!\\)\|/).map((c) => c.replace(/\\\|/g, '|').trim());
48
+ }
38
49
  export function mdToHtml(md) {
39
50
  const lines = md.split('\n');
40
51
  let html = '';
41
52
  let i = 0;
42
53
  while (i < lines.length) {
43
54
  const line = lines[i];
55
+ // GFM table: a pipe-bearing header line whose NEXT line is a delimiter row.
56
+ // Without the delimiter row, pipe lines stay ordinary paragraphs.
57
+ if (line.includes('|') && i + 1 < lines.length && lines[i + 1].includes('-') && TABLE_DELIM_RE.test(lines[i + 1])) {
58
+ const headers = tableCells(line);
59
+ const aligns = tableCells(lines[i + 1]).map((d) => {
60
+ const l = d.startsWith(':');
61
+ const r = d.endsWith(':');
62
+ return l && r ? 'center' : r ? 'right' : l ? 'left' : '';
63
+ });
64
+ const alignAttr = (col) => (aligns[col] ? ` style="text-align:${aligns[col]}"` : '');
65
+ i += 2;
66
+ let body = '';
67
+ while (i < lines.length && lines[i].includes('|') && lines[i].trim() !== '') {
68
+ const cells = tableCells(lines[i]);
69
+ body += '<tr>' + headers.map((_h, c) => `<td${alignAttr(c)}>${inlineMd(cells[c] ?? '')}</td>`).join('') + '</tr>';
70
+ i++;
71
+ }
72
+ html += '<table class="md-table"><thead><tr>'
73
+ + headers.map((h, c) => `<th${alignAttr(c)}>${inlineMd(h)}</th>`).join('')
74
+ + `</tr></thead><tbody>${body}</tbody></table>`;
75
+ continue;
76
+ }
44
77
  if (/^```/.test(line)) {
45
78
  const buf = [];
46
79
  i++;
@@ -100,8 +133,44 @@ export function mdToHtml(md) {
100
133
  }
101
134
  return html;
102
135
  }
136
+ /* ---- token estimation ----
137
+ * estimateTokens starts as the ~4 chars/token heuristic and silently upgrades to
138
+ * the real o200k_base BPE (the GPT-4o/4.1 family — the gateway's routable set)
139
+ * once the host calls enableAccurateTokenCounts(). The upgrade is an explicit,
140
+ * lazy opt-in — never triggered by estimateTokens itself — so tests and the
141
+ * strategy budget math stay deterministic, and the ~1 MB (gz) encoding chunk
142
+ * stays off the startup path. Post-run gateway usage is the ground truth. */
143
+ let bpeCount = null;
144
+ /** Max chars fed to the BPE per count. estimateTokens runs on render paths (the
145
+ * context drawer counts every turn, the composer counts the draft), so a count
146
+ * must stay bounded even for multi-MB inline tool outputs: beyond the cap we
147
+ * encode a sample and extrapolate by length. Exact for anything under 64 KB. */
148
+ export const BPE_SAMPLE_CAP = 65536;
103
149
  export function estimateTokens(s) {
104
- return Math.max(1, Math.round((s || '').length / 4));
150
+ const text = s || '';
151
+ if (bpeCount) {
152
+ try {
153
+ if (text.length <= BPE_SAMPLE_CAP)
154
+ return Math.max(1, bpeCount(text));
155
+ const sampled = bpeCount(text.slice(0, BPE_SAMPLE_CAP));
156
+ return Math.max(1, Math.round(sampled * (text.length / BPE_SAMPLE_CAP)));
157
+ }
158
+ catch { /* fall through to the heuristic */ }
159
+ }
160
+ return Math.max(1, Math.round(text.length / 4));
161
+ }
162
+ /** Identity of the active counter (0 = chars/4 heuristic, 1 = exact BPE). Callers
163
+ * that cache counts keyed on input identity compare this to know when to re-count. */
164
+ export function tokenCountsVersion() {
165
+ return bpeCount ? 1 : 0;
166
+ }
167
+ let bpeLoading = null;
168
+ /** Upgrade estimateTokens to exact BPE counts (idempotent, failure-tolerant). */
169
+ export function enableAccurateTokenCounts() {
170
+ bpeLoading ?? (bpeLoading = import('gpt-tokenizer/encoding/o200k_base')
171
+ .then((mod) => { bpeCount = (text) => mod.encode(text).length; })
172
+ .catch(() => { }));
173
+ return bpeLoading;
105
174
  }
106
175
  /* ============================================================ HIGHLIGHT */
107
176
  function esc(s) {
@@ -1 +1 @@
1
- {"version":3,"file":"ui-helpers.js","sourceRoot":"","sources":["../ui-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ui-helpers.js","sourceRoot":"","sources":["../ui-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,2EAA2E;AAE3E;;;;8DAI8D;AAC9D,SAAS,QAAQ,CAAC,GAAW;IAC3B,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChD,iFAAiF;IACjF,0EAA0E;IAC1E,IAAI,MAAM;QAAE,OAAO,+BAA+B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9E,OAAO,CAAC,CAAC,CAAC,gDAAgD;AAC5D,CAAC;AAED,SAAS,QAAQ,CAAC,CAAS;IACzB,OAAO,CAAC;SACL,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SAClE,OAAO,CAAC,YAAY,EAAE,iBAAiB,CAAC;SACxC,OAAO,CAAC,kBAAkB,EAAE,qBAAqB,CAAC;SAClD,OAAO,CAAC,sBAAsB,EAAE,eAAe,CAAC;QACjD,6EAA6E;QAC7E,0EAA0E;SACzE,OAAO,CAAC,0BAA0B,EAAE,CAAC,EAAE,EAAE,IAAY,EAAE,GAAW,EAAE,EAAE;QACrE,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC3B,OAAO,IAAI;YACT,CAAC,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,+BAA+B,IAAI,MAAM;YACnF,CAAC,CAAC,IAAI,CAAC;IACX,CAAC,CAAC,CAAC;AACP,CAAC;AAED;iFACiF;AACjF,MAAM,cAAc,GAAG,6CAA6C,CAAC;AAErE;kEACkE;AAClE,SAAS,UAAU,CAAC,GAAW;IAC7B,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAClE,OAAO,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EAAU;IACjC,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,4EAA4E;QAC5E,kEAAkE;QAClE,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAClH,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAChD,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,CAAC,CAAC,CAAC;YACH,MAAM,SAAS,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,sBAAsB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACrG,CAAC,IAAI,CAAC,CAAC;YACP,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC5E,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,IAAI,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;gBAClH,CAAC,EAAE,CAAC;YACN,CAAC;YACD,IAAI,IAAI,qCAAqC;kBACzC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;kBACxE,uBAAuB,IAAI,kBAAkB,CAAC;YAClD,SAAS;QACX,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,MAAM,GAAG,GAAa,EAAE,CAAC;YAAC,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAC,CAAC,EAAE,CAAC;YAAC,CAAC;YAC/E,CAAC,EAAE,CAAC;YACJ,IAAI,IAAI,6BAA6B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,eAAe,CAAC;YAChH,SAAS;QACX,CAAC;QACD,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAsB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAC9D,IAAI,IAAI,KAAK,GAAG,oBAAoB,GAAG,KAAK,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC;YAC5F,CAAC,EAAE,CAAC;YAAC,SAAS;QAChB,CAAC;QACD,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBAAC,CAAC,EAAE,CAAC;YAAC,CAAC;YAC9H,IAAI,IAAI,oBAAoB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;YACpF,SAAS;QACX,CAAC;QACD,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBAAC,CAAC,EAAE,CAAC;YAAC,CAAC;YAC9H,IAAI,IAAI,oBAAoB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;YACpF,SAAS;QACX,CAAC;QACD,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,IAAI,IAAI,6BAA6B,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC;YAAC,CAAC,EAAE,CAAC;YAAC,SAAS;QAC5G,CAAC;QACD,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAAC,IAAI,IAAI,oBAAoB,CAAC;YAAC,CAAC,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QACvF,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAAC,CAAC,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,6CAA6C,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAAC,CAAC,EAAE,CAAC;QAAC,CAAC;QAChJ,IAAI,IAAI,mBAAmB,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;6EAM6E;AAC7E,IAAI,QAAQ,GAAmC,IAAI,CAAC;AAEpD;;;gFAGgF;AAChF,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC;AAEpC,MAAM,UAAU,cAAc,CAAC,CAAS;IACtC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;IACrB,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,MAAM,IAAI,cAAc;gBAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACtE,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;YACxD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;QAC3E,CAAC;QAAC,MAAM,CAAC,CAAC,mCAAmC,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAED;sFACsF;AACtF,MAAM,UAAU,kBAAkB;IAChC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC;AAED,IAAI,UAAU,GAAyB,IAAI,CAAC;AAC5C,iFAAiF;AACjF,MAAM,UAAU,yBAAyB;IACvC,UAAU,KAAV,UAAU,GAAK,MAAM,CAAC,mCAAmC,CAAC;SACvD,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,QAAQ,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SAChE,KAAK,CAAC,GAAG,EAAE,GAAoD,CAAC,CAAC,EAAC;IACrE,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,4EAA4E;AAC5E,SAAS,GAAG,CAAC,CAAS;IACpB,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,MAAM,CAAC,IAAY;IAC1B,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,qCAAqC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,iBAAiB,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;IACxI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,EAAE,yBAAyB,CAAC,CAAC;IAC/D,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,yBAAyB,CAAC,CAAC;IACrD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,IAAI,CAAC,IAAY;IACxB,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;IAClB,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,iBAAiB,CAAC,SAAS,CAAC;IAClE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,0BAA0B,CAAC,CAAC;IAC9D,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,yBAAyB,CAAC,CAAC;IACvD,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,wBAAwB,EAAE,0BAA0B,CAAC,CAAC;IACpE,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACZ,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC;YAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAAE,EAAE,GAAG,CAAC,CAAC;iBAAM,CAAC;gBAAC,EAAE,GAAG,CAAC,CAAC;gBAAC,MAAM;YAAC,CAAC;QAAC,CAAC;aAC5E,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,MAAM;IACtD,CAAC;IACD,MAAM,OAAO,GAAG,oCAAoC,CAAC;IACrD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QAClC,MAAM,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC;QACpE,IAAI,OAAO;YAAE,OAAO,qBAAqB,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;QAC5D,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,CAAyB,CAAC;QAC9B,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;QACtB,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI;gBAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACtG,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACjB,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YAC7E,GAAG,IAAI,eAAe,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC;YAC/C,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC;QAC3B,CAAC;QACD,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM;YAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACxF,IAAI,GAAG,KAAK,EAAE;YAAE,GAAG,GAAG,GAAG,CAAC;QAC1B,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC"}
package/dist/usage.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export interface UsageRecord {
2
2
  id: string;
3
3
  ts: number;
4
- surface: 'editor' | 'agent' | 'inline' | 'workflow';
4
+ surface: 'editor' | 'agent' | 'inline' | 'workflow' | 'craft';
5
5
  provider: string;
6
6
  model: string;
7
7
  modelLabel: string;
@@ -19,6 +19,8 @@ export interface UsageTotals {
19
19
  outTok: number;
20
20
  cost: number;
21
21
  }
22
+ /** Subscribe to each new usage record as it's logged. Returns an unsubscribe. */
23
+ export declare function onUsageRecord(cb: (rec: UsageRecord) => void): () => void;
22
24
  /** Wire the "currently anonymous?" signal (App boot). */
23
25
  export declare function setAnonResolver(fn: () => boolean): void;
24
26
  /** Free anon actions consumed so far (read by the free-quota guards). */
@@ -1 +1 @@
1
- {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../usage.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;IACpD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;CAAE;AAkC3F,yDAAyD;AACzD,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,OAAO,GAAG,IAAI,CAAuB;AAC/E,yEAAyE;AACzE,wBAAgB,YAAY,IAAI,MAAM,CAAqB;AAC3D,qEAAqE;AACrE,wBAAgB,aAAa,IAAI,IAAI,CAA+F;AAMpI,sFAAsF;AACtF,wBAAgB,WAAW,IAAI,IAAI,CAA+B;AAElE,wBAAgB,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,CAMrE;AAED,wBAAgB,QAAQ,IAAI,WAAW,EAAE,CAAoB;AAE7D,wBAAgB,UAAU,IAAI,IAAI,CAIjC;AAED,wBAAgB,MAAM,CAAC,KAAK,SAAI,GAAG,WAAW,CAO7C;AAED,kFAAkF;AAClF,wBAAgB,QAAQ,IAAI;IAAE,OAAO,EAAE,WAAW,EAAE,CAAC;IAAC,OAAO,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,WAAW,CAAA;CAAE,CAIlG;AAED,0EAA0E;AAC1E,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK3C;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAIxC"}
1
+ {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../usage.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;IAC9D,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;CAAE;AAwB3F,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,GAAG,MAAM,IAAI,CAGxE;AAeD,yDAAyD;AACzD,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,OAAO,GAAG,IAAI,CAAuB;AAC/E,yEAAyE;AACzE,wBAAgB,YAAY,IAAI,MAAM,CAAqB;AAC3D,qEAAqE;AACrE,wBAAgB,aAAa,IAAI,IAAI,CAA+F;AAMpI,sFAAsF;AACtF,wBAAgB,WAAW,IAAI,IAAI,CAA+B;AAElE,wBAAgB,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,CAOrE;AAED,wBAAgB,QAAQ,IAAI,WAAW,EAAE,CAAoB;AAE7D,wBAAgB,UAAU,IAAI,IAAI,CAIjC;AAED,wBAAgB,MAAM,CAAC,KAAK,SAAI,GAAG,WAAW,CAO7C;AAED,kFAAkF;AAClF,wBAAgB,QAAQ,IAAI;IAAE,OAAO,EAAE,WAAW,EAAE,CAAC;IAAC,OAAO,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,WAAW,CAAA;CAAE,CAIlG;AAED,0EAA0E;AAC1E,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK3C;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAIxC"}
package/dist/usage.js CHANGED
@@ -23,6 +23,14 @@ function load() {
23
23
  let records = load();
24
24
  const listeners = new Set();
25
25
  function notify() { listeners.forEach((fn) => fn()); }
26
+ // Per-record subscribers (analytics-agnostic — the ledger just exposes each new
27
+ // record; the app decides whether/where to forward it, e.g. to the analytics port).
28
+ const recordListeners = new Set();
29
+ /** Subscribe to each new usage record as it's logged. Returns an unsubscribe. */
30
+ export function onUsageRecord(cb) {
31
+ recordListeners.add(cb);
32
+ return () => recordListeners.delete(cb);
33
+ }
26
34
  function persist() {
27
35
  try {
28
36
  localStorage.setItem(LS, JSON.stringify(records));
@@ -69,6 +77,7 @@ export function recordUsage(rec) {
69
77
  maybeBumpAnon();
70
78
  persist();
71
79
  notify();
80
+ recordListeners.forEach((fn) => fn(full));
72
81
  }
73
82
  export function getUsage() { return records; }
74
83
  export function clearUsage() {
package/dist/usage.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"usage.js","sourceRoot":"","sources":["../usage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"usage.js","sourceRoot":"","sources":["../usage.ts"],"names":[],"mappings":"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"}