@invinite-org/invinite-data-cli 0.6.0 → 0.8.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.
@@ -15,8 +15,8 @@ Analyze the earnings call requested in `$ARGUMENTS` using Invinite Data. Prefer
15
15
  - Q&A: `invd earnings qa` (`earnings_call_qa`) and participants: `invd earnings participants` (`earnings_call_participants`)
16
16
  - diff vs the prior call: `invd earnings diff` (`earnings_call_diff`)
17
17
  - optional, price moves during the call: `invd earnings price-attribution` (`earnings_call_price_moves`) — minute returns next to what was being said; skip it on a `404 price_attribution_unavailable`
18
- - only when a claim needs the exact wording: `invd earnings transcript` (`earnings_call_transcript`) or `invd earnings search -q "<topic>" --event-id <event_id>` (`earnings_call_search`)
19
- - when the call has documents (`has_documents`): `invd earnings documents` (`earnings_call_documents`) — CFO commentary, shareholder letter, data sheets; for context beyond the call (annual report, investor-day deck) `invd earnings document-search -q "<topic>" -i <TICKER>` (`earnings_document_search`)
18
+ - only when a claim needs the exact wording: `invd earnings transcript` (`earnings_call_transcript`) or `invd earnings search -q "<keywords>" --event-id <event_id>` (`earnings_call_search`; keywords, not a question: any word may match and the answer follows a matched analyst question) or `invd earnings search -q "<exact quote>" --mode literal --event-id <event_id>` for an exact figure, term or quote
19
+ - when the call has documents (`has_documents`): `invd earnings documents` (`earnings_call_documents`) — CFO commentary, shareholder letter, data sheets; for context beyond the call (annual report, investor-day deck) `invd earnings document-search -q "<keywords>" -i <TICKER>` (`earnings_document_search`; every word must match); a `coverage.completeness` of `partial` / `unknown` means no hits is not proof the topic is absent
20
20
  3. **Summarise**:
21
21
  - **Results vs guidance** — reported figures from the press release against the guidance given on the prior call (`invd earnings guidance-history -i <TICKER> --metric <metric>` for a metric's series).
22
22
  - **Guidance changes** — each item raised, lowered, maintained, introduced or withdrawn (`direction`), with the period and basis (GAAP / non-GAAP).
@@ -128,6 +128,7 @@ Commands about one call take a selector: `--event-id <event_id>` (from `events`
128
128
  - `earnings event --include observations` adds the date / time observations; `earnings participants --include evidence` the participation evidence.
129
129
  - Every `*_ms` field is milliseconds from the call's start: cite it as `[m:ss]`. `qa_start_ms` is where the Q&A begins (null without one).
130
130
  - Company documents and document-search hits are company-published material: quote them as "passages from company-published documents", never as verified facts, and cite each with its document title, year and page (`page`; open `url` at `#page=<page>`). A `webcast` row is link-only (`url` null, `source_url` = the replay page, `link_status`).
131
+ - `earnings search` and `earnings document-search` take `-m, --mode`: `lexical` (the default) matches words and quoted phrases (stemmed; `OR` and `-word` work), `literal` matches the exact characters such as `FY2027` or `10b5-1` (case-sensitive; `--case-sensitive false` for a case-insensitive match). Search with keywords, not a whole question: scoped to one call (`--event-id`) or one company (`-i`), `earnings search` needs any of the words and returns the management answer right after a matching analyst question (its `match.spans` may be empty); without a scope, and in `document-search`, every word must match. Both modes cost the same. In `--json` output read `coverage.completeness` before concluding anything from few or no hits: `partial` / `unknown` means the index does not cover the whole scope yet, so absence is not proof. `match.spans` are code-point offsets of the matched characters in `text`.
131
132
  - Media signed URLs expire after 15 minutes; `--output` on the download commands saves the file.
132
133
  - The live transcript (`ws listen --earnings`), audio, slides, the live stream and webhooks need the PRO plan (calendar, events and `live` need LITE, the other reads STANDARD); a `403` names the plan a route needs.
133
134
 
@@ -200,11 +201,11 @@ invd earnings calendar --json
200
201
  # Call-over-call diff (optional: --event-id, --identifier, --year, --quarter, --date, --event-type, --vs)
201
202
  invd earnings diff --event-id cfbcf4f8-6d4d-41ef-9197-1c91ff2aef8c --json
202
203
 
203
- # Search investor documents (optional: --identifier, --kind, --section, --year, --table, --limit)
204
+ # Search investor documents (optional: --mode, --case-sensitive, --identifier, --kind, --section, --year, --table, --limit)
204
205
  invd earnings document-search -q "Azure growth" -i MSFT --json
205
206
 
206
207
  # Earnings call by ID (optional: --include)
207
- invd earnings event --event-id cfbcf4f8-6d4d-41ef-9197-1c91ff2aef8c --json
208
+ invd earnings event --event-id 9655a5db-8968-40be-8c79-7cd1a8aed8e9 --json
208
209
 
209
210
  # Event history of a company (optional: --from, --to, --include, --event-type, --sort, --limit, --offset, --all)
210
211
  invd earnings events -i MSFT --json
@@ -236,8 +237,8 @@ invd earnings prosody --event-id cfbcf4f8-6d4d-41ef-9197-1c91ff2aef8c --json
236
237
  # Earnings call Q&A (optional: --event-id, --identifier, --year, --quarter, --date, --event-type, --limit, --offset, --include, --all)
237
238
  invd earnings qa --event-id cfbcf4f8-6d4d-41ef-9197-1c91ff2aef8c --json
238
239
 
239
- # Search earnings calls (optional: --event-id, --identifier, --from, --to, --type, --event-type, --limit)
240
- invd earnings search -q "Azure growth" -i MSFT --json
240
+ # Search earnings calls (optional: --mode, --case-sensitive, --event-id, --identifier, --from, --to, --type, --event-type, --limit)
241
+ invd earnings search -q "Azure growth" -m lexical -i MSFT --json
241
242
 
242
243
  # Live audio stream URL (optional: --event-id, --identifier, --year, --quarter, --date, --event-type)
243
244
  invd earnings stream --event-id cfbcf4f8-6d4d-41ef-9197-1c91ff2aef8c --json
@@ -633,6 +634,8 @@ invd earnings events -i NVDA -s desc -l 4 --json # pick the event_id
633
634
  invd earnings transcript --event-id <event_id> --format sections --json
634
635
  invd earnings extractions --event-id <event_id> --kind guidance --json
635
636
  invd earnings search -q "gross margin outlook" --event-id <event_id> --json
637
+ invd earnings search -q "data center revenue" --mode literal --event-id <event_id> --json # exact quote in the call
638
+ invd earnings document-search -q FY2027 -i NVDA --mode literal --json # exact token in the company's documents
636
639
  invd earnings price-attribution --event-id <event_id> --json # optional: price moves during the call
637
640
  ```
638
641
  `price-attribution` (MCP `earnings_call_price_moves`, STANDARD, 1 credit) lines up minute returns with what was said in that minute: temporal coincidence, not attribution of cause; pre-market bars are sparse, and a `404 price_attribution_unavailable` means the call is not attributed yet.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "specVersion": "1.0.0",
3
- "specSha256": "cafa5748c4ca0c51533695eb005138bdd888d5e4144163269fb8b3a245cd0a10",
3
+ "specSha256": "d632bccc5d4a587bdf30590211ef565f5503e2f50502a0fffa5a9fc2e8891717",
4
4
  "groups": [
5
5
  {
6
6
  "name": "company",
@@ -708,9 +708,35 @@
708
708
  "required": true,
709
709
  "type": "string",
710
710
  "example": "Azure growth",
711
- "description": "The question or phrase to search for",
711
+ "description": "The keywords or phrases (mode=lexical) or exact text (mode=literal) to search for",
712
712
  "alias": "q"
713
713
  },
714
+ {
715
+ "name": "mode",
716
+ "in": "query",
717
+ "required": false,
718
+ "type": "string",
719
+ "enum": [
720
+ "lexical",
721
+ "literal"
722
+ ],
723
+ "default": "lexical",
724
+ "example": "lexical",
725
+ "description": "lexical (keywords and phrases, default) or literal (exact characters)",
726
+ "alias": "m"
727
+ },
728
+ {
729
+ "name": "case_sensitive",
730
+ "in": "query",
731
+ "required": false,
732
+ "type": "string",
733
+ "enum": [
734
+ "true",
735
+ "false"
736
+ ],
737
+ "example": "false",
738
+ "description": "mode=literal only: \"false\" matches regardless of case (default \"true\": case-sensitive)"
739
+ },
714
740
  {
715
741
  "name": "identifier",
716
742
  "in": "query",
@@ -780,6 +806,7 @@
780
806
  "rowsPath": "hits",
781
807
  "columns": [
782
808
  "score",
809
+ "match.type",
783
810
  "kind",
784
811
  "year",
785
812
  "group",
@@ -819,7 +846,7 @@
819
846
  "in": "path",
820
847
  "required": true,
821
848
  "type": "string",
822
- "example": "cfbcf4f8-6d4d-41ef-9197-1c91ff2aef8c",
849
+ "example": "9655a5db-8968-40be-8c79-7cd1a8aed8e9",
823
850
  "description": "Event identifier (event_id of any earnings-calls response)"
824
851
  }
825
852
  ],
@@ -1742,9 +1769,35 @@
1742
1769
  "required": true,
1743
1770
  "type": "string",
1744
1771
  "example": "Azure growth",
1745
- "description": "The question or phrase to search for",
1772
+ "description": "The keywords or phrases (mode=lexical) or exact text (mode=literal) to search for",
1746
1773
  "alias": "q"
1747
1774
  },
1775
+ {
1776
+ "name": "mode",
1777
+ "in": "query",
1778
+ "required": false,
1779
+ "type": "string",
1780
+ "enum": [
1781
+ "lexical",
1782
+ "literal"
1783
+ ],
1784
+ "default": "lexical",
1785
+ "example": "lexical",
1786
+ "description": "lexical (keywords and phrases, default) or literal (exact characters)",
1787
+ "alias": "m"
1788
+ },
1789
+ {
1790
+ "name": "case_sensitive",
1791
+ "in": "query",
1792
+ "required": false,
1793
+ "type": "string",
1794
+ "enum": [
1795
+ "true",
1796
+ "false"
1797
+ ],
1798
+ "example": "false",
1799
+ "description": "mode=literal only: \"false\" matches regardless of case (default \"true\": case-sensitive)"
1800
+ },
1748
1801
  {
1749
1802
  "name": "event_id",
1750
1803
  "in": "query",
@@ -1813,12 +1866,14 @@
1813
1866
  }
1814
1867
  ],
1815
1868
  "exampleParams": [
1816
- "identifier"
1869
+ "identifier",
1870
+ "mode"
1817
1871
  ],
1818
1872
  "view": "table",
1819
1873
  "rowsPath": "hits",
1820
1874
  "columns": [
1821
1875
  "score",
1876
+ "match.type",
1822
1877
  "type",
1823
1878
  "symbol",
1824
1879
  "conference_date",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@invinite-org/invinite-data-cli",
3
- "version": "0.6.0",
3
+ "version": "0.8.0",
4
4
  "type": "module",
5
5
  "description": "CLI for the Invinite Data API",
6
6
  "publishConfig": {