@leemour/cli-messaging 0.152.0 → 0.154.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.
Files changed (160) hide show
  1. package/README.md +14 -6
  2. package/THIRD_PARTY_NOTICES +7 -0
  3. package/dist/analysis/anthropic.d.ts.map +1 -1
  4. package/dist/analysis/anthropic.js +2 -27
  5. package/dist/analysis/anthropic.js.map +1 -1
  6. package/dist/analysis/provider.d.ts.map +1 -1
  7. package/dist/analysis/provider.js +8 -38
  8. package/dist/analysis/provider.js.map +1 -1
  9. package/dist/analysis/settings.d.ts +7 -2
  10. package/dist/analysis/settings.d.ts.map +1 -1
  11. package/dist/analysis/settings.js +16 -12
  12. package/dist/analysis/settings.js.map +1 -1
  13. package/dist/botcheck/registries.d.ts +2 -0
  14. package/dist/botcheck/registries.d.ts.map +1 -1
  15. package/dist/botcheck/registries.js +2 -0
  16. package/dist/botcheck/registries.js.map +1 -1
  17. package/dist/botcheck/service.d.ts +1 -0
  18. package/dist/botcheck/service.d.ts.map +1 -1
  19. package/dist/botcheck/service.js +2 -3
  20. package/dist/botcheck/service.js.map +1 -1
  21. package/dist/charts/fonts/NotoSans-Regular.ttf +0 -0
  22. package/dist/charts/fonts/OFL.txt +94 -0
  23. package/dist/charts/fonts/SOURCE.md +5 -0
  24. package/dist/charts/index.d.ts +1 -0
  25. package/dist/charts/index.d.ts.map +1 -1
  26. package/dist/charts/index.js +1 -0
  27. package/dist/charts/index.js.map +1 -1
  28. package/dist/charts/png.d.ts +8 -0
  29. package/dist/charts/png.d.ts.map +1 -0
  30. package/dist/charts/png.js +14 -0
  31. package/dist/charts/png.js.map +1 -0
  32. package/dist/cli/analysis-choice.d.ts.map +1 -1
  33. package/dist/cli/analysis-choice.js +7 -0
  34. package/dist/cli/analysis-choice.js.map +1 -1
  35. package/dist/cli/config-command.js +8 -0
  36. package/dist/cli/config-command.js.map +1 -1
  37. package/dist/cli/index.d.ts +1 -0
  38. package/dist/cli/index.d.ts.map +1 -1
  39. package/dist/cli/index.js +1 -0
  40. package/dist/cli/index.js.map +1 -1
  41. package/dist/cli/messenger/contacts-command.d.ts.map +1 -1
  42. package/dist/cli/messenger/contacts-command.js +8 -5
  43. package/dist/cli/messenger/contacts-command.js.map +1 -1
  44. package/dist/cli/messenger/replies-command.d.ts.map +1 -1
  45. package/dist/cli/messenger/replies-command.js +2 -0
  46. package/dist/cli/messenger/replies-command.js.map +1 -1
  47. package/dist/cli/messenger/replies-edit-command.d.ts +6 -0
  48. package/dist/cli/messenger/replies-edit-command.d.ts.map +1 -0
  49. package/dist/cli/messenger/replies-edit-command.js +81 -0
  50. package/dist/cli/messenger/replies-edit-command.js.map +1 -0
  51. package/dist/cli/messenger/stats-command.d.ts.map +1 -1
  52. package/dist/cli/messenger/stats-command.js +8 -5
  53. package/dist/cli/messenger/stats-command.js.map +1 -1
  54. package/dist/cli/messenger/tasks-command.d.ts +5 -0
  55. package/dist/cli/messenger/tasks-command.d.ts.map +1 -0
  56. package/dist/cli/messenger/tasks-command.js +108 -0
  57. package/dist/cli/messenger/tasks-command.js.map +1 -0
  58. package/dist/cli/settings.d.ts +10 -0
  59. package/dist/cli/settings.d.ts.map +1 -1
  60. package/dist/cli/settings.js +24 -2
  61. package/dist/cli/settings.js.map +1 -1
  62. package/dist/conversations/chunks.d.ts +19 -3
  63. package/dist/conversations/chunks.d.ts.map +1 -1
  64. package/dist/conversations/chunks.js +48 -3
  65. package/dist/conversations/chunks.js.map +1 -1
  66. package/dist/conversations/link.d.ts +2 -1
  67. package/dist/conversations/link.d.ts.map +1 -1
  68. package/dist/conversations/link.js +2 -1
  69. package/dist/conversations/link.js.map +1 -1
  70. package/dist/mcp/tools/contacts.d.ts.map +1 -1
  71. package/dist/mcp/tools/contacts.js +8 -5
  72. package/dist/mcp/tools/contacts.js.map +1 -1
  73. package/dist/mcp/tools/stats.d.ts.map +1 -1
  74. package/dist/mcp/tools/stats.js +15 -4
  75. package/dist/mcp/tools/stats.js.map +1 -1
  76. package/dist/mcp/tools/tasks.d.ts +4 -0
  77. package/dist/mcp/tools/tasks.d.ts.map +1 -0
  78. package/dist/mcp/tools/tasks.js +84 -0
  79. package/dist/mcp/tools/tasks.js.map +1 -0
  80. package/dist/mcp/tools.d.ts.map +1 -1
  81. package/dist/mcp/tools.js +2 -0
  82. package/dist/mcp/tools.js.map +1 -1
  83. package/dist/models/anthropic.d.ts +3 -0
  84. package/dist/models/anthropic.d.ts.map +1 -0
  85. package/dist/models/anthropic.js +47 -0
  86. package/dist/models/anthropic.js.map +1 -0
  87. package/dist/models/endpoint.d.ts +2 -0
  88. package/dist/models/endpoint.d.ts.map +1 -0
  89. package/dist/models/endpoint.js +10 -0
  90. package/dist/models/endpoint.js.map +1 -0
  91. package/dist/models/index.d.ts +15 -0
  92. package/dist/models/index.d.ts.map +1 -0
  93. package/dist/models/index.js +40 -0
  94. package/dist/models/index.js.map +1 -0
  95. package/dist/models/openai.d.ts +3 -0
  96. package/dist/models/openai.d.ts.map +1 -0
  97. package/dist/models/openai.js +43 -0
  98. package/dist/models/openai.js.map +1 -0
  99. package/dist/models/options.d.ts +4 -0
  100. package/dist/models/options.d.ts.map +1 -0
  101. package/dist/models/options.js +11 -0
  102. package/dist/models/options.js.map +1 -0
  103. package/dist/models/settings.d.ts +23 -0
  104. package/dist/models/settings.d.ts.map +1 -0
  105. package/dist/models/settings.js +91 -0
  106. package/dist/models/settings.js.map +1 -0
  107. package/dist/models/types.d.ts +35 -0
  108. package/dist/models/types.d.ts.map +1 -0
  109. package/dist/models/types.js +15 -0
  110. package/dist/models/types.js.map +1 -0
  111. package/dist/replies/decide.d.ts.map +1 -1
  112. package/dist/replies/decide.js +4 -0
  113. package/dist/replies/decide.js.map +1 -1
  114. package/dist/replies/edit.d.ts +34 -0
  115. package/dist/replies/edit.d.ts.map +1 -0
  116. package/dist/replies/edit.js +105 -0
  117. package/dist/replies/edit.js.map +1 -0
  118. package/dist/replies/rules.d.ts +110 -32
  119. package/dist/replies/rules.d.ts.map +1 -1
  120. package/dist/replies/rules.js +17 -5
  121. package/dist/replies/rules.js.map +1 -1
  122. package/dist/sends/permissions.d.ts +1 -1
  123. package/dist/sends/permissions.d.ts.map +1 -1
  124. package/dist/sends/permissions.js +3 -0
  125. package/dist/sends/permissions.js.map +1 -1
  126. package/dist/services/conversations.js +1 -1
  127. package/dist/services/conversations.js.map +1 -1
  128. package/dist/services/index.d.ts +4 -0
  129. package/dist/services/index.d.ts.map +1 -1
  130. package/dist/services/index.js +3 -0
  131. package/dist/services/index.js.map +1 -1
  132. package/dist/services/person-context.d.ts.map +1 -1
  133. package/dist/services/person-context.js +3 -1
  134. package/dist/services/person-context.js.map +1 -1
  135. package/dist/services/tasks.d.ts +43 -0
  136. package/dist/services/tasks.d.ts.map +1 -0
  137. package/dist/services/tasks.js +91 -0
  138. package/dist/services/tasks.js.map +1 -0
  139. package/dist/store/sqlite/conversations.d.ts.map +1 -1
  140. package/dist/store/sqlite/conversations.js +4 -0
  141. package/dist/store/sqlite/conversations.js.map +1 -1
  142. package/dist/store/sqlite/manifest.d.ts.map +1 -1
  143. package/dist/store/sqlite/manifest.js +1 -0
  144. package/dist/store/sqlite/manifest.js.map +1 -1
  145. package/dist/store/sqlite/migrations.generated.d.ts.map +1 -1
  146. package/dist/store/sqlite/migrations.generated.js +7 -0
  147. package/dist/store/sqlite/migrations.generated.js.map +1 -1
  148. package/dist/store/sqlite/schema.d.ts +32 -0
  149. package/dist/store/sqlite/schema.d.ts.map +1 -1
  150. package/dist/store/sqlite/schema.js +6 -0
  151. package/dist/store/sqlite/schema.js.map +1 -1
  152. package/dist/store/sqlite/vectors.d.ts +4 -1
  153. package/dist/store/sqlite/vectors.d.ts.map +1 -1
  154. package/dist/store/sqlite/vectors.js +26 -13
  155. package/dist/store/sqlite/vectors.js.map +1 -1
  156. package/dist/store/store.d.ts +2 -0
  157. package/dist/store/store.d.ts.map +1 -1
  158. package/dist/store/store.js.map +1 -1
  159. package/package.json +7 -2
  160. package/parity.json +477 -2
package/README.md CHANGED
@@ -19,7 +19,8 @@ provider has travels in `providerMetadata`.
19
19
  | | |
20
20
  |---|---|
21
21
  | `.` | `Chat`, `Message`, `Contact`, `Page`… · `formatLocator` / `parseLocator` · `renderMessages` · `pickChat` / `pickPerson` |
22
- | `./charts` | neutral chart data, a replaceable renderer interface and an on-demand dark SVG renderer |
22
+ | `./charts` | neutral chart data, a replaceable renderer interface and on-demand dark SVG and PNG images |
23
+ | `./models` | `modelGateway`, provider-neutral requests, adapter-owned option checks, injected keys and purpose consent, and `modelTarget` for effective configuration; [provider settings](docs/search/ai-providers.md) |
23
24
  | `./store` | `openCache` — `node:sqlite` under Node, `bun:sqlite` under Bun, WAL and a busy timeout on both · `openStore` — the shared message store, every method async: one file for every messenger (`MESSAGING_STORE` overrides where), forward-only migrations with `min_compatible`, every sender an identity with a person of their own, edits kept as revisions, a message by its id, deletions kept as tombstones, trigram search · `find` — by text, by sender, or both; `together` for the chats where every sender wrote, `perChat` to cap each chat · `savePeople` and `people` — usernames and bot flags, and a `PeopleLookup` for `pickPerson` |
24
25
  | `./sends` | the send guard: a level per command path (`permissions`: deny, readonly, ask, allow — `readOnly` and `allow` read as levels), a recipient list, an hourly limit, and a journal of every attempt that never holds the text; `newSendId` for a send's identity across retries |
25
26
  | `./cli` | the command skeleton: `run` (never throws, returns an exit code), the global flags, `settingsFor` (flag → environment → file → default, one strict file schema with each CLI's own fields), the profile as the first word, `--timeout` that closes what a command holds, paging, and run records: `--record` keeps a run's ids and timings (never content), a failure is kept unless `--no-record`, and `runsCommand` gives `runs list\|show\|path` · `configCommand(app, config)` shows and changes the settings with where each came from, and `config migrate --dry-run` previews translation of legacy access settings before `config migrate` saves it; `migratePermissionConfig` provides the same layer-preserving transformation to consumers · `completeCommand(messenger, config, options?)` gives shell completion, account-scoped chat and person ids from the store and never a connection; `options.sources` can supply local suggestions for a separate command group and `options.account` can read an existing local account binding · `storeSummary(env)` gives its local store diagnostics to consumers retaining their own doctor command · `doctorCommand(messenger)` reports the installation's state from disk (the store, the account, sends, runs, the messenger's own checks), and connects only with `--online`; `doctor report create` writes that, the failed run and the recent sends to a file with every id a label · `skillCommand(app, url)` prints the CLI's own SKILL.md for an agent (`skill show`) · `commandsCommand(app)` describes every command as JSON, with `contract` (`CONTRACT`, the major version of the output types) and which commands write · the shared read commands: a CLI describes its messenger once (`Messenger`: its app, a `connect` that returns a `MessengerAdapter`, how `me` maps to a chat) and gets `accountCommand`, `chatsCommand` (`list`, `show`), `contactsCommand` (`list`, `show`) `recipientsCommand`, `sendsCommand`, `watchCommand` (new messages as they arrive, `--jsonl`, until Ctrl-C or `--timeout`; `--events` adds edits, deletions and reactions, each kept in the store), `storeCommand` (the local store: `store fetch` puts a chat's history into it, resumable, FloodWait-aware, `--since` to stop at a time, `--background` for a detached job that `store jobs list|show|cancel` follow, `--estimate` to only price what is left from the store alone; `store status` what it holds; `store export` a chat's messages out of it, as JSON or `--format markdown`; `store clear --left` deletes the chats the account has left; `store info`, `store check`, `store migrate`, `store backup` and `store restore` look after the file itself — its size and schema, whether it is healthy and which chats are behind, bringing it up to this build, and a copy to go back to), `inboxCommand` (other people's unread messages in every chat, or with `--new` what arrived since the last check — each message once, the point moved only by a run that printed; copied from max-cli), `serveCommand` (keeps the store current until stopped — one per profile by a lock file, catch-up on, started by a person, `server start` or a unit), `serverCommand` (`server start|stop|restart|status|logs`: `serve` in the background, as max-cli's `server`; `install|uninstall` add a systemd user unit or a launchd agent per profile, and `install` starts nothing), and `messagesCommand` (`list`, `show`, `context`, `search` over the store by any three letters inside a word, or `--regex`, `send` through the send guard (`--reply-to`, `--silent`, `--no-preview`, `--md`, `--file` and `--photo` with the text as the caption, and `--at` to send later, with `scheduled` listing the queue), `edit` of the owner's own message, `forward` to another chat and `pin`/`unpin` through it too (the adapter's optional `edit`, `forward`, `pin` and `unpin`), and `delete` — at most 10, for the owner unless `--for-everyone`; it asks first by default, and `--allow-dangerous` is the yes · `reactionsCommand` (`add`, `remove`: the owner's reaction on a message, through the guard; the adapter's optional `react`) · `pollsCommand` (`show` a poll with its answer ids, `vote` by id or `--retract`, `close` the owner's own, `create` one — a vote guarded as a reaction, closing as an edit, a new poll as a message with a send id); a `msg:` locator names a message) — every read saved to the store, `--offline` answered from it, each call a run event · `mcpCommand(messenger)` serves the profile to an agent over MCP on stdin and stdout (copied from max-cli: one connection held for minutes, one call at a time, read tools named `<cli>_<command words>` answering what `--json` prints, `<cli>_status` without connecting; the write tools — `<cli>_messages_send`, `_edit`, `_forward`, `_pin`, `_unpin`, `_delete`, `<cli>_reactions_add`, `_remove`, `<cli>_chats_mark_read`, `<cli>_polls_vote`, `_close` and `_create` — are offered by the profile's `permissions` and run through the same guard as their commands; a write at level `ask` shows the owner a form first (`--allow-dangerous` or `--yes` skips it), `--confirm-send` puts every write through the form, and `messages_delete` never deletes for everyone), and `mcp config` prints the entry for a desktop client · `mcp --http` serves the same tools over HTTP on 127.0.0.1 behind the owner's tunnel with a one-owner login; a CLI with its own MCP server mounts `serveOverHttp(build, options)` with `OVER_HTTP`, `httpTokenFile` and `revokeAll` |
@@ -59,6 +60,11 @@ A locator for another messenger or account is refused. Singular `link` differs f
59
60
 
60
61
  ## Command discovery
61
62
 
63
+ The [CLI standard](docs/dev/STANDARD.md#external-references-and-our-adoption-profile) explains
64
+ which POSIX, GNU, CLIG and agent-facing conventions we adopt. The [architecture](docs/dev/ARCHITECTURE.md#cli-design-references)
65
+ shows where their contracts live; the [compliance audit](docs/dev/CLI-COMPLIANCE.md) records
66
+ remaining gaps and deliberate differences.
67
+
62
68
  To discover arguments without reading the whole command tree, run
63
69
  `<cli> commands messages evidence --json`. Replace the path with any command or group;
64
70
  `<cli> commands messages --json` includes its descendants. The response retains global options
@@ -117,17 +123,19 @@ News collection and news digests remain separate future workflows. The detailed
117
123
 
118
124
  `statsCommand(messenger)` from `./cli` mounts `stats charts <chat>`. It returns `{ chart }`:
119
125
  messages per day/week, active authors, or joins and leaves (`--chart-kind`). `--output activity.svg`
120
- also saves a dark SVG in a new private file and returns `chartFile`. The command reads the same
126
+ or `--output activity.png` also saves a dark image in a new private file and returns `chartFile`. The command reads the same
121
127
  statistics service; the chart itself never fetches extra history, sends or marks read. Missing dates
122
- are gaps, and partial data is labelled. `--jsonl`, PNG and image output to stdout are unavailable.
128
+ are gaps, and partial data is labelled. `--jsonl` and image output to stdout are unavailable.
123
129
 
124
130
  The read-only MCP `stats_charts` returns the same chart JSON from the store, without writing a file
125
- or connecting. Membership is unavailable in that stored mode because it needs online events.
131
+ or connecting. Optional `format: "png"` returns PNG image content and JSON text containing
132
+ `chart` and `image: { format, width, height }`; the default remains JSON. Membership is unavailable in that stored mode because it needs online events.
126
133
  Both interfaces inherit the `messages` read permission.
127
134
 
128
135
  `./charts` exports the library-neutral `ChartData`, `ChartRenderer`, `chatChart`, `CHART_SIZE`
129
- and the lazy `chartRenderer()` loader. ECharts types stay in the renderer module; JSON-only commands
130
- do not load it. Pass a renderer loader as the second argument to `statsCommand` to replace the image implementation
136
+ and the lazy `chartRenderer()` loader, plus the separate `chartPng(svg)` encoder. ECharts types stay in the renderer module; JSON-only commands
137
+ do not load it. PNG lazily loads resvg-js 2.6.2 and uses bundled Noto Sans Regular (SIL OFL 1.1),
138
+ with system fonts disabled. SVG does not load resvg. Pass a renderer loader as the second argument to `statsCommand` to replace the image implementation
131
139
  while keeping the neutral data and command contract. Images default to a dark theme. ECharts is pinned at 6.1.0; its published unpacked files
132
140
  plus zrender and tslib total about 61.6 MiB before package-manager deduplication.
133
141
 
@@ -751,3 +751,10 @@ Copyright 2017-2026 The Apache Software Foundation
751
751
  This product includes software developed at
752
752
  The Apache Software Foundation (https://www.apache.org/).
753
753
  Apache ECharts is distributed under the Apache License 2.0; its LICENSE is shipped in the echarts package.
754
+
755
+ Noto Sans Regular
756
+ Copyright 2018 The Noto Project Authors (github.com/googlei18n/noto-fonts)
757
+ Licensed under SIL Open Font License 1.1; see dist/charts/fonts/OFL.txt and SOURCE.md.
758
+
759
+ PNG rasterization uses @resvg/resvg-js under MPL-2.0. Its original sources are
760
+ available at https://github.com/thx/resvg-js/tree/v2.6.2.
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/analysis/anthropic.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAEvE,eAAO,MAAM,OAAO,WACV,gBAAgB,UAChB,MAAM,SACP,MAAM,aACF,MAAM,KAChB,OAAO,CAAC,gBAAgB,CAyB1B,CAAA"}
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/analysis/anthropic.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAEvE,eAAO,MAAM,OAAO,WACV,gBAAgB,UAChB,MAAM,SACP,MAAM,aACF,MAAM,KAChB,OAAO,CAAC,gBAAgB,CACsF,CAAA"}
@@ -1,28 +1,3 @@
1
- import Anthropic from "@anthropic-ai/sdk";
2
- export const analyze = async (target, system, input, maxTokens) => {
3
- const client = new Anthropic({
4
- apiKey: target.apiKey ?? "",
5
- authToken: null,
6
- fetch: (input, init) => fetch(input, { ...init, redirect: "error" }),
7
- baseURL: target.baseUrl,
8
- maxRetries: 0,
9
- logLevel: "off",
10
- timeout: 120_000,
11
- });
12
- const response = await client.messages
13
- .stream({ model: target.model, system, messages: [{ role: "user", content: input }], max_tokens: maxTokens })
14
- .finalMessage();
15
- if (response.stop_reason !== "end_turn")
16
- throw new Error("incomplete analysis");
17
- return {
18
- text: response.content
19
- .filter((block) => block.type === "text")
20
- .map((block) => block.text)
21
- .join(""),
22
- tokens: response.usage.input_tokens +
23
- response.usage.output_tokens +
24
- (response.usage.cache_creation_input_tokens ?? 0) +
25
- (response.usage.cache_read_input_tokens ?? 0),
26
- };
27
- };
1
+ import { anthropic } from "../models/anthropic.js";
2
+ export const analyze = async (target, system, input, maxTokens) => anthropic.complete(target, { purpose: "analysis", system, prompt: input, maxTokens }, {}, target.apiKey, fetch);
28
3
  //# sourceMappingURL=anthropic.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/analysis/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAA;AAGzC,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,EAC1B,MAAwB,EACxB,MAAc,EACd,KAAa,EACb,SAAiB,EACU,EAAE;IAC7B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;QAC3B,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;QACpE,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,UAAU,EAAE,CAAC;QACb,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,OAAO;KACjB,CAAC,CAAA;IACF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ;SACnC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;SAC5G,YAAY,EAAE,CAAA;IACjB,IAAI,QAAQ,CAAC,WAAW,KAAK,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;IAC/E,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,OAAO;aACnB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;aACxC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;aAC1B,IAAI,CAAC,EAAE,CAAC;QACX,MAAM,EACJ,QAAQ,CAAC,KAAK,CAAC,YAAY;YAC3B,QAAQ,CAAC,KAAK,CAAC,aAAa;YAC5B,CAAC,QAAQ,CAAC,KAAK,CAAC,2BAA2B,IAAI,CAAC,CAAC;YACjD,CAAC,QAAQ,CAAC,KAAK,CAAC,uBAAuB,IAAI,CAAC,CAAC;KAChD,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/analysis/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAGlD,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,EAC1B,MAAwB,EACxB,MAAc,EACd,KAAa,EACb,SAAiB,EACU,EAAE,CAC7B,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/analysis/provider.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,QAAQ,GAAG,WAAW,CAAA;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AACD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;CACf;AACD,MAAM,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAA;AAC7G,eAAO,MAAM,gBAAgB,WAAY,gBAAgB,WAA+D,CAAA;AAExH,eAAO,MAAM,YAAY,WAAY,gBAAgB,KAAG,eA8CvD,CAAA"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/analysis/provider.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,QAAQ,GAAG,WAAW,CAAA;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AACD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;CACf;AACD,MAAM,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAA;AAC7G,eAAO,MAAM,gBAAgB,WAAY,gBAAgB,WAA+D,CAAA;AAExH,eAAO,MAAM,YAAY,WAAY,gBAAgB,KAAG,eASvD,CAAA"}
@@ -1,46 +1,16 @@
1
1
  import { CliError } from "@leemour/cli-core";
2
+ import { modelGateway } from "../models/index.js";
2
3
  import { endpoint } from "./settings.js";
3
4
  export const providerIdentity = (target) => `${target.provider}:${target.baseUrl.replace(/\/+$/, "")}`;
4
5
  export const openAnalysis = (target) => {
5
6
  if (!endpoint(target.baseUrl))
6
7
  throw new CliError("validation_error", "invalid analysis endpoint");
7
- return async (system, input, maxTokens) => {
8
- try {
9
- if (target.provider === "anthropic")
10
- return await (await import("./anthropic.js")).analyze(target, system, input, maxTokens);
11
- const response = await fetch(`${target.baseUrl.replace(/\/+$/, "")}/chat/completions`, {
12
- method: "POST",
13
- headers: {
14
- "Content-Type": "application/json",
15
- ...(target.apiKey ? { Authorization: `Bearer ${target.apiKey}` } : {}),
16
- },
17
- body: JSON.stringify({
18
- model: target.model,
19
- messages: [
20
- { role: "system", content: system },
21
- { role: "user", content: input },
22
- ],
23
- ...(new URL(target.baseUrl).hostname === "api.openai.com"
24
- ? { max_completion_tokens: maxTokens }
25
- : { max_tokens: maxTokens }),
26
- }),
27
- signal: AbortSignal.timeout(120_000),
28
- redirect: "error",
29
- });
30
- if (!response.ok)
31
- throw new Error("provider rejected request");
32
- const body = (await response.json());
33
- const choice = body.choices?.[0];
34
- if (choice?.finish_reason !== "stop" ||
35
- typeof choice.message?.content !== "string" ||
36
- !Number.isInteger(body.usage?.total_tokens) ||
37
- (body.usage?.total_tokens ?? 0) < 1)
38
- throw new Error("incomplete response");
39
- return { text: choice.message.content, tokens: body.usage?.total_tokens };
40
- }
41
- catch {
42
- throw new CliError("invalid_response", "analysis provider failed or returned an incomplete response; this batch was not stored");
43
- }
44
- };
8
+ const gateway = modelGateway({
9
+ resolve: () => target,
10
+ key: () => target.apiKey,
11
+ // The analysis command checks per-chat consent before each batch.
12
+ consent: () => true,
13
+ });
14
+ return async (system, input, maxTokens) => gateway.complete({ purpose: "analysis", system, prompt: input, maxTokens });
45
15
  };
46
16
  //# sourceMappingURL=provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/analysis/provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/analysis/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAaxC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAwB,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAA;AAExH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAwB,EAAmB,EAAE;IACxE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;QAAE,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,2BAA2B,CAAC,CAAA;IAClG,MAAM,OAAO,GAAG,YAAY,CAAC;QAC3B,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM;QACrB,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM;QACxB,kEAAkE;QAClE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;KACpB,CAAC,CAAA;IACF,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;AACxH,CAAC,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import * as v from "valibot";
2
- export declare const endpoint: (value: string) => boolean;
2
+ export { endpoint } from "../models/endpoint.js";
3
3
  export declare const AI_ENTRIES: {
4
4
  embeddingProvider: v.OptionalSchema<v.PicklistSchema<["local", "openai"], undefined>, undefined>;
5
5
  embeddingModel: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>;
@@ -8,12 +8,17 @@ export declare const AI_ENTRIES: {
8
8
  analysisProvider: v.OptionalSchema<v.PicklistSchema<["agent", "openai", "anthropic"], undefined>, undefined>;
9
9
  analysisModel: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>;
10
10
  analysisBaseUrl: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.CheckAction<string, "use an HTTP/S endpoint without credentials, query or fragment">]>, undefined>;
11
+ models: v.OptionalSchema<v.RecordSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>]>, v.StrictObjectSchema<{
12
+ readonly provider: v.OptionalSchema<v.PicklistSchema<["off", "openai", "anthropic"], undefined>, undefined>;
13
+ readonly model: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>;
14
+ readonly baseUrl: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.CheckAction<string, "use an HTTP/S endpoint without credentials, query or fragment">]>, undefined>;
15
+ }, undefined>, undefined>, undefined>;
11
16
  };
12
17
  export type AISettings = v.InferOutput<v.ObjectSchema<typeof AI_ENTRIES, undefined>>;
13
18
  export declare const AI_DEFAULTS: AISettings;
14
19
  export declare const AI_SETTING_KEYS: (keyof AISettings)[];
15
20
  export declare const resolveAISettings: (prefix: string, layers: readonly (readonly [string, Readonly<Record<string, unknown>> | undefined])[], env: NodeJS.ProcessEnv) => {
16
21
  values: AISettings;
17
- sources: Record<keyof AISettings, string>;
22
+ sources: Record<string, string>;
18
23
  };
19
24
  //# sourceMappingURL=settings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/analysis/settings.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAE5B,eAAO,MAAM,QAAQ,UAAW,MAAM,KAAG,OAOxC,CAAA;AAGD,eAAO,MAAM,UAAU;IACrB,iBAAiB;IACjB,cAAc;IACd,gBAAgB;IAChB,aAAa;IACb,gBAAgB;IAChB,aAAa;IACb,eAAe;CAChB,CAAA;AACD,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,UAAU,EAAE,SAAS,CAAC,CAAC,CAAA;AACpF,eAAO,MAAM,WAAW,EAAE,UAAsE,CAAA;AAEhG,eAAO,MAAM,eAAe,EAA8B,CAAC,MAAM,UAAU,CAAC,EAAE,CAAA;AAE9E,eAAO,MAAM,iBAAiB,WACpB,MAAM,UACN,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,OAChF,MAAM,CAAC,UAAU,KACrB;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,UAAU,EAAE,MAAM,CAAC,CAAA;CAoBjE,CAAA"}
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/analysis/settings.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAI5B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAIhD,eAAO,MAAM,UAAU;IACrB,iBAAiB;IACjB,cAAc;IACd,gBAAgB;IAChB,aAAa;IACb,gBAAgB;IAChB,aAAa;IACb,eAAe;IACf,MAAM;;;;;CACP,CAAA;AACD,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,UAAU,EAAE,SAAS,CAAC,CAAC,CAAA;AACpF,eAAO,MAAM,WAAW,EAAE,UAAsE,CAAA;AAEhG,eAAO,MAAM,eAAe,EAA8B,CAAC,MAAM,UAAU,CAAC,EAAE,CAAA;AAE9E,eAAO,MAAM,iBAAiB,WACpB,MAAM,UACN,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,OAChF,MAAM,CAAC,UAAU,KACrB;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CA6BvD,CAAA"}
@@ -1,14 +1,8 @@
1
1
  import { CliError } from "@leemour/cli-core";
2
2
  import * as v from "valibot";
3
- export const endpoint = (value) => {
4
- try {
5
- const url = new URL(value);
6
- return ["https:", "http:"].includes(url.protocol) && !url.username && !url.password && !url.search && !url.hash;
7
- }
8
- catch {
9
- return false;
10
- }
11
- };
3
+ import { endpoint } from "../models/endpoint.js";
4
+ import { modelSettingsShape, resolveModelSettings } from "../models/settings.js";
5
+ export { endpoint } from "../models/endpoint.js";
12
6
  const model = v.pipe(v.string(), v.trim(), v.minLength(1), v.maxLength(200));
13
7
  const url = v.pipe(v.string(), v.check(endpoint, "use an HTTP/S endpoint without credentials, query or fragment"));
14
8
  export const AI_ENTRIES = {
@@ -19,11 +13,14 @@ export const AI_ENTRIES = {
19
13
  analysisProvider: v.optional(v.picklist(["agent", "openai", "anthropic"])),
20
14
  analysisModel: v.optional(model),
21
15
  analysisBaseUrl: v.optional(url),
16
+ models: v.optional(modelSettingsShape),
22
17
  };
23
18
  export const AI_DEFAULTS = { embeddingProvider: "local", analysisProvider: "agent" };
24
19
  export const AI_SETTING_KEYS = Object.keys(AI_ENTRIES);
25
20
  export const resolveAISettings = (prefix, layers, env) => {
26
- const resolved = Object.entries(AI_ENTRIES).map(([key, schema]) => {
21
+ const resolved = Object.entries(AI_ENTRIES)
22
+ .filter(([key]) => key !== "models")
23
+ .map(([key, schema]) => {
27
24
  const variable = `${prefix}_${key.replace(/[A-Z]/g, (letter) => `_${letter}`).toUpperCase()}`;
28
25
  const raw = env[variable]?.trim() || undefined;
29
26
  const candidates = [
@@ -39,9 +36,16 @@ export const resolveAISettings = (prefix, layers, env) => {
39
36
  throw new CliError("configuration_error", `${key} from ${from} is invalid`);
40
37
  return { key, value: checked.output, from };
41
38
  });
39
+ const values = Object.fromEntries(resolved.map(({ key, value }) => [key, value]));
40
+ const sources = Object.fromEntries(resolved.map(({ key, from }) => [key, from]));
41
+ const models = resolveModelSettings(prefix, layers, env, { values, sources });
42
42
  return {
43
- values: Object.fromEntries(resolved.map(({ key, value }) => [key, value])),
44
- sources: Object.fromEntries(resolved.map(({ key, from }) => [key, from])),
43
+ values: { ...values, models: models.models },
44
+ sources: {
45
+ ...sources,
46
+ ...models.sources,
47
+ models: Object.values(models.sources).some((source) => source !== "default") ? "resolved per purpose" : "default",
48
+ },
45
49
  };
46
50
  };
47
51
  //# sourceMappingURL=settings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/analysis/settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/analysis/settings.ts"],"names":[],"mappings":"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"}
@@ -33,6 +33,8 @@ export declare const askRegistries: (id: Id, options?: RegistryOptions) => Promi
33
33
  export declare const askCas: (id: Id, options?: RegistryOptions) => Promise<RegistryAnswer>;
34
34
  /** `banned` and `scammer` per lols.bot's own OpenAPI description. */
35
35
  export declare const askLols: (id: Id, options?: RegistryOptions) => Promise<RegistryAnswer>;
36
+ /** The registries list Telegram accounts only. */
37
+ export declare const registriesCover: (provider: string) => boolean;
36
38
  /** For a messenger the registries do not cover: every one `unknown`, saying why. */
37
39
  export declare const notCovered: (provider: string, now?: Date) => RegistryAnswer[];
38
40
  //# sourceMappingURL=registries.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registries.d.ts","sourceRoot":"","sources":["../../src/botcheck/registries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAElD,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,CAAA;AAEzC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,YAAY,CAAA;IAClB,yGAAyG;IACzG,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAA;IACtC,SAAS,EAAE,MAAM,CAAA;IACjB,kFAAkF;IAClF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+CAA+C;IAC/C,OAAO,CAAC,EAAE,cAAc,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,OAAO,KAAK,CAAA;IACpB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,+EAA+E;AAC/E,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,YAAY,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAG5E,CAAA;AAID;;;;GAIG;AACH,eAAO,MAAM,aAAa,OAAc,EAAE,YAAW,eAAe,KAAQ,OAAO,CAAC,cAAc,EAAE,CAC1C,CAAA;AA4B1D,yGAAyG;AACzG,eAAO,MAAM,MAAM,OAAc,EAAE,YAAW,eAAe,KAAQ,OAAO,CAAC,cAAc,CA6B1F,CAAA;AAED,qEAAqE;AACrE,eAAO,MAAM,OAAO,OAAc,EAAE,YAAW,eAAe,KAAQ,OAAO,CAAC,cAAc,CAsB3F,CAAA;AAED,oFAAoF;AACpF,eAAO,MAAM,UAAU,aAAc,MAAM,iBAAqB,cAAc,EAMzE,CAAA"}
1
+ {"version":3,"file":"registries.d.ts","sourceRoot":"","sources":["../../src/botcheck/registries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAElD,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,CAAA;AAEzC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,YAAY,CAAA;IAClB,yGAAyG;IACzG,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAA;IACtC,SAAS,EAAE,MAAM,CAAA;IACjB,kFAAkF;IAClF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+CAA+C;IAC/C,OAAO,CAAC,EAAE,cAAc,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,OAAO,KAAK,CAAA;IACpB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,+EAA+E;AAC/E,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,YAAY,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAG5E,CAAA;AAID;;;;GAIG;AACH,eAAO,MAAM,aAAa,OAAc,EAAE,YAAW,eAAe,KAAQ,OAAO,CAAC,cAAc,EAAE,CAC1C,CAAA;AA4B1D,yGAAyG;AACzG,eAAO,MAAM,MAAM,OAAc,EAAE,YAAW,eAAe,KAAQ,OAAO,CAAC,cAAc,CA6B1F,CAAA;AAED,qEAAqE;AACrE,eAAO,MAAM,OAAO,OAAc,EAAE,YAAW,eAAe,KAAQ,OAAO,CAAC,cAAc,CAsB3F,CAAA;AAED,kDAAkD;AAClD,eAAO,MAAM,eAAe,aAAc,MAAM,KAAG,OAAkC,CAAA;AAErF,oFAAoF;AACpF,eAAO,MAAM,UAAU,aAAc,MAAM,iBAAqB,cAAc,EAMzE,CAAA"}
@@ -88,6 +88,8 @@ export const askLols = async (id, options = {}) => {
88
88
  ];
89
89
  return { name: "lols", answer: "listed", checkedAt, detail: facts.filter(Boolean).join(", "), reasons };
90
90
  };
91
+ /** The registries list Telegram accounts only. */
92
+ export const registriesCover = (provider) => provider === "telegram";
91
93
  /** For a messenger the registries do not cover: every one `unknown`, saying why. */
92
94
  export const notCovered = (provider, now = new Date()) => Object.keys(REGISTRIES).map((name) => ({
93
95
  name,
@@ -1 +1 @@
1
- {"version":3,"file":"registries.js","sourceRoot":"","sources":["../../src/botcheck/registries.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registries.js","sourceRoot":"","sources":["../../src/botcheck/registries.ts"],"names":[],"mappings":"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"}
@@ -12,5 +12,6 @@ export interface BotCheckService {
12
12
  notes: string[];
13
13
  }>;
14
14
  }
15
+ /** The registries list Telegram accounts; a bot of another messenger is not in them. */
15
16
  export declare const botCheckService: (deps: ServiceDeps) => BotCheckService;
16
17
  //# sourceMappingURL=service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/botcheck/service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEtD,OAAO,EAAE,KAAK,QAAQ,EAAsE,MAAM,YAAY,CAAA;AAC9G,OAAO,EAAkD,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAKtG,MAAM,WAAW,YAAY;IAC3B,sEAAsE;IACtE,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,eAAe,CAAA;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,uEAAuE;IACvE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,GAAG;QAAE,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAA;CAC1F;AAKD,eAAO,MAAM,eAAe,SAAU,WAAW,KAAG,eAiFnD,CAAA"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/botcheck/service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEtD,OAAO,EAAE,KAAK,QAAQ,EAAsE,MAAM,YAAY,CAAA;AAC9G,OAAO,EAAkD,KAAK,eAAe,EAAmB,MAAM,iBAAiB,CAAA;AAKvH,MAAM,WAAW,YAAY;IAC3B,sEAAsE;IACtE,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,eAAe,CAAA;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,uEAAuE;IACvE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,GAAG;QAAE,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAA;CAC1F;AAED,wFAAwF;AAExF,eAAO,MAAM,eAAe,SAAU,WAAW,KAAG,eAiFnD,CAAA"}
@@ -1,11 +1,10 @@
1
1
  import { pickPerson } from "../resolve.js";
2
2
  import { storeIfOpen } from "../services/deps.js";
3
3
  import { scorePerson } from "./check.js";
4
- import { askRegistries, notCovered } from "./registries.js";
4
+ import { askRegistries, notCovered, registriesCover } from "./registries.js";
5
5
  /** Their stored messages read at most; enough for a first message and repeats, not a whole history. */
6
6
  const ACTIVITY_MESSAGES = 1000;
7
7
  /** The registries list Telegram accounts; a bot of another messenger is not in them. */
8
- const TELEGRAM = "telegram";
9
8
  export const botCheckService = (deps) => {
10
9
  const subjectOf = async (reference) => {
11
10
  if (!deps.offline) {
@@ -74,7 +73,7 @@ export const botCheckService = (deps) => {
74
73
  else if (deps.offline)
75
74
  notes.push("offline: the ban lists were not asked");
76
75
  else
77
- answers = provider === TELEGRAM ? await askRegistries(subject.id, registry) : notCovered(provider);
76
+ answers = registriesCover(provider) ? await askRegistries(subject.id, registry) : notCovered(provider);
78
77
  const activity = await activityOf(subject.id);
79
78
  if (!activity)
80
79
  notes.push("no local store: what they wrote was not judged");
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/botcheck/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/botcheck/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ Copyright 2018 The Noto Project Authors (github.com/googlei18n/noto-fonts)
2
+
3
+ This Font Software is licensed under the SIL Open Font License,
4
+ Version 1.1.
5
+
6
+ This license is copied below, and is also available with a FAQ at:
7
+ http://scripts.sil.org/OFL
8
+
9
+ -----------------------------------------------------------
10
+ SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
11
+ -----------------------------------------------------------
12
+
13
+ PREAMBLE
14
+ The goals of the Open Font License (OFL) are to stimulate worldwide
15
+ development of collaborative font projects, to support the font
16
+ creation efforts of academic and linguistic communities, and to
17
+ provide a free and open framework in which fonts may be shared and
18
+ improved in partnership with others.
19
+
20
+ The OFL allows the licensed fonts to be used, studied, modified and
21
+ redistributed freely as long as they are not sold by themselves. The
22
+ fonts, including any derivative works, can be bundled, embedded,
23
+ redistributed and/or sold with any software provided that any reserved
24
+ names are not used by derivative works. The fonts and derivatives,
25
+ however, cannot be released under any other type of license. The
26
+ requirement for fonts to remain under this license does not apply to
27
+ any document created using the fonts or their derivatives.
28
+
29
+ DEFINITIONS
30
+ "Font Software" refers to the set of files released by the Copyright
31
+ Holder(s) under this license and clearly marked as such. This may
32
+ include source files, build scripts and documentation.
33
+
34
+ "Reserved Font Name" refers to any names specified as such after the
35
+ copyright statement(s).
36
+
37
+ "Original Version" refers to the collection of Font Software
38
+ components as distributed by the Copyright Holder(s).
39
+
40
+ "Modified Version" refers to any derivative made by adding to,
41
+ deleting, or substituting -- in part or in whole -- any of the
42
+ components of the Original Version, by changing formats or by porting
43
+ the Font Software to a new environment.
44
+
45
+ "Author" refers to any designer, engineer, programmer, technical
46
+ writer or other person who contributed to the Font Software.
47
+
48
+ PERMISSION & CONDITIONS
49
+ Permission is hereby granted, free of charge, to any person obtaining
50
+ a copy of the Font Software, to use, study, copy, merge, embed,
51
+ modify, redistribute, and sell modified and unmodified copies of the
52
+ Font Software, subject to the following conditions:
53
+
54
+ 1) Neither the Font Software nor any of its individual components, in
55
+ Original or Modified Versions, may be sold by itself.
56
+
57
+ 2) Original or Modified Versions of the Font Software may be bundled,
58
+ redistributed and/or sold with any software, provided that each copy
59
+ contains the above copyright notice and this license. These can be
60
+ included either as stand-alone text files, human-readable headers or
61
+ in the appropriate machine-readable metadata fields within text or
62
+ binary files as long as those fields can be easily viewed by the user.
63
+
64
+ 3) No Modified Version of the Font Software may use the Reserved Font
65
+ Name(s) unless explicit written permission is granted by the
66
+ corresponding Copyright Holder. This restriction only applies to the
67
+ primary font name as presented to the users.
68
+
69
+ 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
70
+ Software shall not be used to promote, endorse or advertise any
71
+ Modified Version, except to acknowledge the contribution(s) of the
72
+ Copyright Holder(s) and the Author(s) or with their explicit written
73
+ permission.
74
+
75
+ 5) The Font Software, modified or unmodified, in part or in whole,
76
+ must be distributed entirely under this license, and must not be
77
+ distributed under any other license. The requirement for fonts to
78
+ remain under this license does not apply to any document created using
79
+ the Font Software.
80
+
81
+ TERMINATION
82
+ This license becomes null and void if any of the above conditions are
83
+ not met.
84
+
85
+ DISCLAIMER
86
+ THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
87
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
88
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
89
+ OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
90
+ COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
91
+ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
92
+ DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
93
+ FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
94
+ OTHER DEALINGS IN THE FONT SOFTWARE.
@@ -0,0 +1,5 @@
1
+ # Noto Sans Regular
2
+
3
+ Vendored without modification from [notofonts/noto-fonts](https://github.com/notofonts/noto-fonts/tree/ffebf8c1ee449e544955a7e813c54f9b73848eac), `hinted/ttf/NotoSans/NotoSans-Regular.ttf`.
4
+
5
+ SIL Open Font License 1.1: [OFL.txt](OFL.txt). Font SHA-256: `b85c38ecea8a7cfb39c24e395a4007474fa5a4fc864f6ee33309eb4948d232d5`.
@@ -1,4 +1,5 @@
1
1
  export { chartKindOf, chartPeriodOf, chatChart } from "./chat.js";
2
2
  export { CHART_KINDS, CHART_SIZE, type ChartData, type ChartKind, type ChartPeriod, type ChartRenderer, type ChartSize, type RenderedChart, } from "./model.js";
3
+ export { chartPng, type RenderedPng } from "./png.js";
3
4
  export { chartRenderer } from "./render.js";
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/charts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACjE,OAAO,EACL,WAAW,EACX,UAAU,EACV,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,aAAa,GACnB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/charts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACjE,OAAO,EACL,WAAW,EACX,UAAU,EACV,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,aAAa,GACnB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,QAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA"}
@@ -1,4 +1,5 @@
1
1
  export { chartKindOf, chartPeriodOf, chatChart } from "./chat.js";
2
2
  export { CHART_KINDS, CHART_SIZE, } from "./model.js";
3
+ export { chartPng } from "./png.js";
3
4
  export { chartRenderer } from "./render.js";
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/charts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACjE,OAAO,EACL,WAAW,EACX,UAAU,GAOX,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/charts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACjE,OAAO,EACL,WAAW,EACX,UAAU,GAOX,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,QAAQ,EAAoB,MAAM,UAAU,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,8 @@
1
+ import type { ChartSize, RenderedChart } from "./model.js";
2
+ export interface RenderedPng extends ChartSize {
3
+ bytes: Uint8Array;
4
+ format: "png";
5
+ mimeType: "image/png";
6
+ }
7
+ export declare const chartPng: (svg: RenderedChart) => Promise<RenderedPng>;
8
+ //# sourceMappingURL=png.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"png.d.ts","sourceRoot":"","sources":["../../src/charts/png.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE1D,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,KAAK,EAAE,UAAU,CAAA;IACjB,MAAM,EAAE,KAAK,CAAA;IACb,QAAQ,EAAE,WAAW,CAAA;CACtB;AAED,eAAO,MAAM,QAAQ,QAAe,aAAa,KAAG,OAAO,CAAC,WAAW,CAWtE,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { fileURLToPath } from "node:url";
2
+ export const chartPng = async (svg) => {
3
+ const { renderAsync } = await import("@resvg/resvg-js");
4
+ const image = await renderAsync(Buffer.from(svg.bytes), {
5
+ font: {
6
+ fontFiles: [fileURLToPath(new URL("./fonts/NotoSans-Regular.ttf", import.meta.url))],
7
+ loadSystemFonts: false,
8
+ defaultFontFamily: "Noto Sans",
9
+ sansSerifFamily: "Noto Sans",
10
+ },
11
+ });
12
+ return { bytes: image.asPng(), format: "png", mimeType: "image/png", width: image.width, height: image.height };
13
+ };
14
+ //# sourceMappingURL=png.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"png.js","sourceRoot":"","sources":["../../src/charts/png.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AASxC,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAAE,GAAkB,EAAwB,EAAE;IACzE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAA;IACvD,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QACtD,IAAI,EAAE;YACJ,SAAS,EAAE,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,8BAA8B,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACpF,eAAe,EAAE,KAAK;YACtB,iBAAiB,EAAE,WAAW;YAC9B,eAAe,EAAE,WAAW;SAC7B;KACF,CAAC,CAAA;IACF,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAA;AACjH,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"analysis-choice.d.ts","sourceRoot":"","sources":["../../src/cli/analysis-choice.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAE3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AACD,eAAO,MAAM,cAAc,YAChB,eAAe,OACnB,WAAW,YACN,QAAQ,OACb,MAAM,CAAC,UAAU,KACrB,gBA8BF,CAAA"}
1
+ {"version":3,"file":"analysis-choice.d.ts","sourceRoot":"","sources":["../../src/cli/analysis-choice.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAE3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AACD,eAAO,MAAM,cAAc,YAChB,eAAe,OACnB,WAAW,YACN,QAAQ,OACb,MAAM,CAAC,UAAU,KACrB,gBAqCF,CAAA"}
@@ -2,6 +2,13 @@ import { CliError } from "@leemour/cli-core";
2
2
  import { endpoint } from "../analysis/settings.js";
3
3
  import { embeddingKeys } from "./embedding-keys.js";
4
4
  export const analysisChoice = (options, app, settings, env) => {
5
+ const configured = { ...settings.models?.default, ...settings.models?.analysis };
6
+ settings = {
7
+ ...settings,
8
+ analysisProvider: configured.provider === "off" ? "agent" : (configured.provider ?? settings.analysisProvider),
9
+ analysisModel: configured.model ?? settings.analysisModel,
10
+ analysisBaseUrl: configured.baseUrl ?? settings.analysisBaseUrl,
11
+ };
5
12
  const override = (options.provider !== undefined && options.provider !== (settings.analysisProvider ?? "agent")) ||
6
13
  (options.baseUrl !== undefined &&
7
14
  options.baseUrl.replace(/\/+$/, "") !== settings.analysisBaseUrl?.replace(/\/+$/, ""));