@talqing/sdk 0.7.0 → 0.9.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.
@@ -540,8 +540,9 @@ export class Batches extends HeyApiClient {
540
540
  *
541
541
  * List outbound calling batches, newest first, with live progress.
542
542
  *
543
- * `counts` breaks the recipient list down by outcome and `next_dial_at` says
544
- * when a batch that is not dialling will start again — the clock, not a fault.
543
+ * `counts` breaks the recipient list down by outcome; `next_dial_at` and
544
+ * `next_dial_reason` say when a batch that is not dialling will start again and
545
+ * why — its start time, its window or today's limit, not a fault.
545
546
  * A `failed` batch carries `failure_reason`: the circuit breaker stopped it
546
547
  * after ten consecutive setup failures.
547
548
  */
@@ -577,8 +578,9 @@ export class Batches extends HeyApiClient {
577
578
  * greeting. A number that appears twice is refused with both row numbers.
578
579
  *
579
580
  * `start_at` and `calling_window` schedule it in the timezone you give;
580
- * `max_concurrency` and `max_attempts` pace it. A number that was reached is
581
- * never called twice.
581
+ * `max_concurrency`, `max_attempts`, `dial_gap_seconds` and `dial_daily_cap`
582
+ * (a fixed limit or a ramp) pace it. A number that was reached is never
583
+ * called twice.
582
584
  *
583
585
  * Two things you would otherwise learn from an invoice:
584
586
  *
@@ -1835,58 +1837,6 @@ export class Agents2 extends HeyApiClient {
1835
1837
  });
1836
1838
  }
1837
1839
  }
1838
- export class Knowledge extends HeyApiClient {
1839
- /**
1840
- * Knowledge Copilot Send Message
1841
- *
1842
- * Say something to KnowledgeCoPilot. The reply arrives on the stream, not here.
1843
- *
1844
- * Returns as soon as the turn is queued; watch `turn` and `message` frames
1845
- * on the matching `/stream` for what it does.
1846
- */
1847
- send(parameters, options) {
1848
- const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'kb_id' }, { key: 'sendMessageRequest', map: 'body' }] }]);
1849
- return (options?.client ?? this.client).post({
1850
- responseStyle: 'data',
1851
- security: [{ scheme: 'bearer', type: 'http' }, {
1852
- in: 'cookie',
1853
- name: 'talqing_session',
1854
- type: 'apiKey'
1855
- }],
1856
- url: '/v1/copilot/knowledge/{kb_id}/messages',
1857
- ...options,
1858
- ...params,
1859
- headers: {
1860
- 'Content-Type': 'application/json',
1861
- ...options?.headers,
1862
- ...params.headers
1863
- }
1864
- });
1865
- }
1866
- /**
1867
- * Knowledge Copilot Stream
1868
- *
1869
- * KnowledgeCoPilot's curation chat for one knowledge base.
1870
- *
1871
- * Frames: `snapshot` (the whole conversation, sent first and on every
1872
- * reconnect), `message` (one new message), `turn` (that turn's lifecycle —
1873
- * `running`, `done`, `error`, `canceled`).
1874
- */
1875
- stream(parameters, options) {
1876
- const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'kb_id' }] }]);
1877
- return (options?.client ?? this.client).sse.get({
1878
- responseStyle: 'data',
1879
- security: [{ scheme: 'bearer', type: 'http' }, {
1880
- in: 'cookie',
1881
- name: 'talqing_session',
1882
- type: 'apiKey'
1883
- }],
1884
- url: '/v1/copilot/knowledge/{kb_id}/stream',
1885
- ...options,
1886
- ...params
1887
- });
1888
- }
1889
- }
1890
1840
  export class Tasks extends HeyApiClient {
1891
1841
  /**
1892
1842
  * Task Copilot Send Message
@@ -1995,9 +1945,6 @@ export class Copilot extends HeyApiClient {
1995
1945
  get agents() {
1996
1946
  return this._agents ?? (this._agents = new Agents2({ client: this.client }));
1997
1947
  }
1998
- get knowledge() {
1999
- return this._knowledge ?? (this._knowledge = new Knowledge({ client: this.client }));
2000
- }
2001
1948
  get tasks() {
2002
1949
  return this._tasks ?? (this._tasks = new Tasks({ client: this.client }));
2003
1950
  }
@@ -2217,7 +2164,8 @@ export class Sends extends HeyApiClient {
2217
2164
  * drafting runs. It cannot be live beside another send of the batch (409).
2218
2165
  *
2219
2166
  * `start_at` schedules it, `window` holds it to business hours, and
2220
- * `send_gap_seconds` and `send_daily_cap` pace the whole batch. Everything
2167
+ * `send_gap_seconds` and `send_daily_cap` (a fixed limit or a ramp) pace the
2168
+ * whole batch. Everything
2221
2169
  * omitted comes from the batch. Cancelling it leaves the unsent rows as drafts.
2222
2170
  */
2223
2171
  create(parameters, options) {
@@ -2453,7 +2401,7 @@ export class Batches2 extends HeyApiClient {
2453
2401
  * One batch: its policy, its per-status counts and what drafting has cost.
2454
2402
  *
2455
2403
  * `drafted_versions` says which published version of the task wrote how many
2456
- * rows, and `sent_today` how much of `send_daily_cap` is left today.
2404
+ * rows, and `sent_today` how much of `send_daily_cap_today` is left.
2457
2405
  */
2458
2406
  get(parameters, options) {
2459
2407
  const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'batch_id' }] }]);
@@ -2605,74 +2553,15 @@ export class Email extends HeyApiClient {
2605
2553
  return this._senders ?? (this._senders = new Senders({ client: this.client }));
2606
2554
  }
2607
2555
  }
2608
- export class McpTools extends HeyApiClient {
2556
+ export class Entries extends HeyApiClient {
2609
2557
  /**
2610
- * List Integration Mcp Tools
2611
- *
2612
- * Connect to the integration's MCP server and list every tool it offers.
2558
+ * Create Faq Entries
2613
2559
  *
2614
- * A live call to the provider, so it also proves the connection works. The
2615
- * list is unfiltered — it is what tool approval is chosen from. Which of these
2616
- * an attached agent can actually call is the integration's `allowed_tools`
2617
- * (null there means all of them). Fails if the integration is not active or
2618
- * the server is unreachable.
2619
- */
2620
- list(parameters, options) {
2621
- const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'integration_id' }] }]);
2622
- return (options?.client ?? this.client).get({
2623
- responseStyle: 'data',
2624
- security: [{ scheme: 'bearer', type: 'http' }, {
2625
- in: 'cookie',
2626
- name: 'talqing_session',
2627
- type: 'apiKey'
2628
- }],
2629
- url: '/v1/integrations/{integration_id}/mcp-tools',
2630
- ...options,
2631
- ...params
2632
- });
2633
- }
2634
- }
2635
- export class Triggers extends HeyApiClient {
2636
- /**
2637
- * List Integration Triggers
2638
- *
2639
- * List the trigger deployments under an integration.
2640
- *
2641
- * A trigger binds an inbound provider event — a Telegram message — to a
2642
- * published agent version.
2643
- */
2644
- list(parameters, options) {
2645
- const params = buildClientParams([parameters], [{ args: [
2646
- { in: 'path', key: 'integration_id' },
2647
- { in: 'query', key: 'limit' },
2648
- { in: 'query', key: 'offset' }
2649
- ] }]);
2650
- return (options?.client ?? this.client).get({
2651
- responseStyle: 'data',
2652
- security: [{ scheme: 'bearer', type: 'http' }, {
2653
- in: 'cookie',
2654
- name: 'talqing_session',
2655
- type: 'apiKey'
2656
- }],
2657
- url: '/v1/integrations/{integration_id}/triggers',
2658
- ...options,
2659
- ...params
2660
- });
2661
- }
2662
- /**
2663
- * Create Integration Trigger
2664
- *
2665
- * Deploy an agent to an inbound provider event.
2666
- *
2667
- * `reply_mode` decides what happens with the agent's answer: `public_reply`
2668
- * sends it to the customer, `internal_note` posts it privately where the
2669
- * provider supports that, `none` generates without sending.
2670
- *
2671
- * Enabling validates that the integration is active and the assigned agent is
2672
- * a published text agent, so create disabled while still wiring things up.
2560
+ * Append question/answer entries to an FAQ, all or nothing. Live at once:
2561
+ * agents using the FAQ read them from their next session.
2673
2562
  */
2674
2563
  create(parameters, options) {
2675
- const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'integration_id' }, { key: 'createIntegrationTriggerRequest', map: 'body' }] }]);
2564
+ const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'faq_id' }, { key: 'createFaqEntriesRequest', map: 'body' }] }]);
2676
2565
  return (options?.client ?? this.client).post({
2677
2566
  responseStyle: 'data',
2678
2567
  security: [{ scheme: 'bearer', type: 'http' }, {
@@ -2680,7 +2569,7 @@ export class Triggers extends HeyApiClient {
2680
2569
  name: 'talqing_session',
2681
2570
  type: 'apiKey'
2682
2571
  }],
2683
- url: '/v1/integrations/{integration_id}/triggers',
2572
+ url: '/v1/faqs/{faq_id}/entries',
2684
2573
  ...options,
2685
2574
  ...params,
2686
2575
  headers: {
@@ -2691,12 +2580,12 @@ export class Triggers extends HeyApiClient {
2691
2580
  });
2692
2581
  }
2693
2582
  /**
2694
- * Delete Integration Trigger
2583
+ * Delete Faq Entry
2695
2584
  *
2696
- * Delete a trigger permanently. The agent stops receiving that event.
2585
+ * Delete one entry from an FAQ.
2697
2586
  */
2698
2587
  delete(parameters, options) {
2699
- const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'integration_id' }, { in: 'path', key: 'trigger_id' }] }]);
2588
+ const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'faq_id' }, { in: 'path', key: 'entry_id' }] }]);
2700
2589
  return (options?.client ?? this.client).delete({
2701
2590
  responseStyle: 'data',
2702
2591
  security: [{ scheme: 'bearer', type: 'http' }, {
@@ -2704,25 +2593,21 @@ export class Triggers extends HeyApiClient {
2704
2593
  name: 'talqing_session',
2705
2594
  type: 'apiKey'
2706
2595
  }],
2707
- url: '/v1/integrations/{integration_id}/triggers/{trigger_id}',
2596
+ url: '/v1/faqs/{faq_id}/entries/{entry_id}',
2708
2597
  ...options,
2709
2598
  ...params
2710
2599
  });
2711
2600
  }
2712
2601
  /**
2713
- * Patch Integration Trigger
2714
- *
2715
- * Update a trigger: reassign the agent, change reply mode, enable or
2716
- * disable it.
2602
+ * Update Faq Entry
2717
2603
  *
2718
- * Omitted fields are left unchanged, and enabling one runs the same checks
2719
- * creating it did.
2604
+ * Change one entry's question, answer or both. Live from the next session.
2720
2605
  */
2721
2606
  update(parameters, options) {
2722
2607
  const params = buildClientParams([parameters], [{ args: [
2723
- { in: 'path', key: 'integration_id' },
2724
- { in: 'path', key: 'trigger_id' },
2725
- { key: 'patchIntegrationTriggerRequest', map: 'body' }
2608
+ { in: 'path', key: 'faq_id' },
2609
+ { in: 'path', key: 'entry_id' },
2610
+ { key: 'updateFaqEntryRequest', map: 'body' }
2726
2611
  ] }]);
2727
2612
  return (options?.client ?? this.client).patch({
2728
2613
  responseStyle: 'data',
@@ -2731,7 +2616,7 @@ export class Triggers extends HeyApiClient {
2731
2616
  name: 'talqing_session',
2732
2617
  type: 'apiKey'
2733
2618
  }],
2734
- url: '/v1/integrations/{integration_id}/triggers/{trigger_id}',
2619
+ url: '/v1/faqs/{faq_id}/entries/{entry_id}',
2735
2620
  ...options,
2736
2621
  ...params,
2737
2622
  headers: {
@@ -2742,14 +2627,11 @@ export class Triggers extends HeyApiClient {
2742
2627
  });
2743
2628
  }
2744
2629
  }
2745
- export class Integrations extends HeyApiClient {
2630
+ export class Faqs extends HeyApiClient {
2746
2631
  /**
2747
- * List Integrations
2632
+ * List Faqs
2748
2633
  *
2749
- * List the workspace's integrations with their provider, status and config.
2750
- *
2751
- * Secret values are never returned — credential fields come back as
2752
- * `{{secrets.NAME}}` references.
2634
+ * List the workspace's FAQs by name, with how many questions each holds.
2753
2635
  */
2754
2636
  list(parameters, options) {
2755
2637
  const params = buildClientParams([parameters], [{ args: [{ in: 'query', key: 'limit' }, { in: 'query', key: 'offset' }] }]);
@@ -2760,26 +2642,18 @@ export class Integrations extends HeyApiClient {
2760
2642
  name: 'talqing_session',
2761
2643
  type: 'apiKey'
2762
2644
  }],
2763
- url: '/v1/integrations',
2645
+ url: '/v1/faqs',
2764
2646
  ...options,
2765
2647
  ...params
2766
2648
  });
2767
2649
  }
2768
2650
  /**
2769
- * Create Integration
2651
+ * Create Faq
2770
2652
  *
2771
- * Create a manual integration, fully configured.
2772
- *
2773
- * Which of `credentials_ref`, `provider_account_info`, `mcp_config` and
2774
- * `webhook_config` a provider needs is described by its `setup_fields` in the
2775
- * integration catalog. Secret-bearing fields take a plaintext value — stored
2776
- * as a workspace secret — or an existing `{{secrets.NAME}}` reference.
2777
- *
2778
- * Leave `allowed_tools` unset to expose every tool the server lists. OAuth
2779
- * providers are connected from the dashboard instead.
2653
+ * Create an FAQ, optionally with its first question/answer entries.
2780
2654
  */
2781
2655
  create(parameters, options) {
2782
- const params = buildClientParams([parameters], [{ args: [{ key: 'createIntegrationRequest', map: 'body' }] }]);
2656
+ const params = buildClientParams([parameters], [{ args: [{ key: 'faqDefinition', map: 'body' }] }]);
2783
2657
  return (options?.client ?? this.client).post({
2784
2658
  responseStyle: 'data',
2785
2659
  security: [{ scheme: 'bearer', type: 'http' }, {
@@ -2787,7 +2661,7 @@ export class Integrations extends HeyApiClient {
2787
2661
  name: 'talqing_session',
2788
2662
  type: 'apiKey'
2789
2663
  }],
2790
- url: '/v1/integrations',
2664
+ url: '/v1/faqs',
2791
2665
  ...options,
2792
2666
  ...params,
2793
2667
  headers: {
@@ -2798,36 +2672,13 @@ export class Integrations extends HeyApiClient {
2798
2672
  });
2799
2673
  }
2800
2674
  /**
2801
- * Integration Catalog
2802
- *
2803
- * List the providers that can be integrated, and how to connect each one.
2675
+ * Delete Faq
2804
2676
  *
2805
- * `auth_type` says which path a provider takes: `manual` through this API,
2806
- * `oauth` from the dashboard. `setup_fields` is the authoritative list of what
2807
- * each manual provider requires — read it rather than guessing. `capabilities`
2808
- * says whether it serves tools (MCP) or a messaging channel (triggers).
2809
- */
2810
- catalog(parameters, options) {
2811
- const params = buildClientParams([parameters], [{ args: [{ in: 'query', key: 'limit' }, { in: 'query', key: 'offset' }] }]);
2812
- return (options?.client ?? this.client).get({
2813
- responseStyle: 'data',
2814
- security: [{ scheme: 'bearer', type: 'http' }, {
2815
- in: 'cookie',
2816
- name: 'talqing_session',
2817
- type: 'apiKey'
2818
- }],
2819
- url: '/v1/integrations/catalog',
2820
- ...options,
2821
- ...params
2822
- });
2823
- }
2824
- /**
2825
- * Delete Integration
2826
- *
2827
- * Delete an integration and its triggers permanently.
2677
+ * Delete an FAQ and its entries. Refused with 409 while an agent or task
2678
+ * still attaches it.
2828
2679
  */
2829
2680
  delete(parameters, options) {
2830
- const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'integration_id' }] }]);
2681
+ const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'faq_id' }] }]);
2831
2682
  return (options?.client ?? this.client).delete({
2832
2683
  responseStyle: 'data',
2833
2684
  security: [{ scheme: 'bearer', type: 'http' }, {
@@ -2835,19 +2686,18 @@ export class Integrations extends HeyApiClient {
2835
2686
  name: 'talqing_session',
2836
2687
  type: 'apiKey'
2837
2688
  }],
2838
- url: '/v1/integrations/{integration_id}',
2689
+ url: '/v1/faqs/{faq_id}',
2839
2690
  ...options,
2840
2691
  ...params
2841
2692
  });
2842
2693
  }
2843
2694
  /**
2844
- * Get Integration
2695
+ * Get Faq
2845
2696
  *
2846
- * Fetch one integration: provider, status, structured config, trigger
2847
- * capabilities and inbound webhook setup state.
2697
+ * Get one FAQ with every entry, in the order they were added.
2848
2698
  */
2849
2699
  get(parameters, options) {
2850
- const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'integration_id' }] }]);
2700
+ const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'faq_id' }] }]);
2851
2701
  return (options?.client ?? this.client).get({
2852
2702
  responseStyle: 'data',
2853
2703
  security: [{ scheme: 'bearer', type: 'http' }, {
@@ -2855,26 +2705,18 @@ export class Integrations extends HeyApiClient {
2855
2705
  name: 'talqing_session',
2856
2706
  type: 'apiKey'
2857
2707
  }],
2858
- url: '/v1/integrations/{integration_id}',
2708
+ url: '/v1/faqs/{faq_id}',
2859
2709
  ...options,
2860
2710
  ...params
2861
2711
  });
2862
2712
  }
2863
2713
  /**
2864
- * Patch Integration
2865
- *
2866
- * Update an integration. Omitted fields are left unchanged.
2714
+ * Update Faq
2867
2715
  *
2868
- * Sending `credentials_ref` rotates the credential. Only `active` integrations
2869
- * can be attached to agents or serve triggers.
2870
- *
2871
- * `allowed_tools` replaces the approved list wholesale: exactly those tools
2872
- * become callable by every agent this integration is attached to. It cannot be
2873
- * emptied — an agent that should call nothing is an integration that should be
2874
- * disabled.
2716
+ * Rename an FAQ.
2875
2717
  */
2876
2718
  update(parameters, options) {
2877
- const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'integration_id' }, { key: 'patchIntegrationRequest', map: 'body' }] }]);
2719
+ const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'faq_id' }, { key: 'updateFaqRequest', map: 'body' }] }]);
2878
2720
  return (options?.client ?? this.client).patch({
2879
2721
  responseStyle: 'data',
2880
2722
  security: [{ scheme: 'bearer', type: 'http' }, {
@@ -2882,7 +2724,7 @@ export class Integrations extends HeyApiClient {
2882
2724
  name: 'talqing_session',
2883
2725
  type: 'apiKey'
2884
2726
  }],
2885
- url: '/v1/integrations/{integration_id}',
2727
+ url: '/v1/faqs/{faq_id}',
2886
2728
  ...options,
2887
2729
  ...params,
2888
2730
  headers: {
@@ -2892,45 +2734,52 @@ export class Integrations extends HeyApiClient {
2892
2734
  }
2893
2735
  });
2894
2736
  }
2895
- get mcpTools() {
2896
- return this._mcpTools ?? (this._mcpTools = new McpTools({ client: this.client }));
2897
- }
2898
- get triggers() {
2899
- return this._triggers ?? (this._triggers = new Triggers({ client: this.client }));
2737
+ get entries() {
2738
+ return this._entries ?? (this._entries = new Entries({ client: this.client }));
2900
2739
  }
2901
2740
  }
2902
- export class Nodes extends HeyApiClient {
2741
+ export class McpTools extends HeyApiClient {
2903
2742
  /**
2904
- * Delete Node
2743
+ * List Integration Mcp Tools
2905
2744
  *
2906
- * Drop one entry from the table of contents, permanently.
2745
+ * Connect to the integration's MCP server and list every tool it offers.
2907
2746
  *
2908
- * Its children go with it, and agents can no longer retrieve any of it.
2747
+ * A live call to the provider, so it also proves the connection works. The
2748
+ * list is unfiltered — it is what tool approval is chosen from. Which of these
2749
+ * an attached agent can actually call is the integration's `allowed_tools`
2750
+ * (null there means all of them). Fails if the integration is not active or
2751
+ * the server is unreachable.
2909
2752
  */
2910
- delete(parameters, options) {
2911
- const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'kb_id' }, { in: 'path', key: 'node_id' }] }]);
2912
- return (options?.client ?? this.client).delete({
2753
+ list(parameters, options) {
2754
+ const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'integration_id' }] }]);
2755
+ return (options?.client ?? this.client).get({
2913
2756
  responseStyle: 'data',
2914
2757
  security: [{ scheme: 'bearer', type: 'http' }, {
2915
2758
  in: 'cookie',
2916
2759
  name: 'talqing_session',
2917
2760
  type: 'apiKey'
2918
2761
  }],
2919
- url: '/v1/knowledge/{kb_id}/nodes/{node_id}',
2762
+ url: '/v1/integrations/{integration_id}/mcp-tools',
2920
2763
  ...options,
2921
2764
  ...params
2922
2765
  });
2923
2766
  }
2767
+ }
2768
+ export class Triggers extends HeyApiClient {
2924
2769
  /**
2925
- * Get Node
2770
+ * List Integration Triggers
2926
2771
  *
2927
- * Read one entry of the table of contents, with its full content.
2772
+ * List the trigger deployments under an integration.
2928
2773
  *
2929
- * This is the text an agent retrieves when it fetches this node. `version` is
2930
- * what `patch_node` needs for a safe edit.
2774
+ * A trigger binds an inbound provider event — a Telegram message — to a
2775
+ * published agent version.
2931
2776
  */
2932
- get(parameters, options) {
2933
- const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'kb_id' }, { in: 'path', key: 'node_id' }] }]);
2777
+ list(parameters, options) {
2778
+ const params = buildClientParams([parameters], [{ args: [
2779
+ { in: 'path', key: 'integration_id' },
2780
+ { in: 'query', key: 'limit' },
2781
+ { in: 'query', key: 'offset' }
2782
+ ] }]);
2934
2783
  return (options?.client ?? this.client).get({
2935
2784
  responseStyle: 'data',
2936
2785
  security: [{ scheme: 'bearer', type: 'http' }, {
@@ -2938,37 +2787,33 @@ export class Nodes extends HeyApiClient {
2938
2787
  name: 'talqing_session',
2939
2788
  type: 'apiKey'
2940
2789
  }],
2941
- url: '/v1/knowledge/{kb_id}/nodes/{node_id}',
2790
+ url: '/v1/integrations/{integration_id}/triggers',
2942
2791
  ...options,
2943
2792
  ...params
2944
2793
  });
2945
2794
  }
2946
2795
  /**
2947
- * Patch Node
2796
+ * Create Integration Trigger
2948
2797
  *
2949
- * Correct one entry's title, summary or content by hand — the way to fix a
2950
- * fact the crawl got wrong without rebuilding.
2798
+ * Deploy an agent to an inbound provider event.
2951
2799
  *
2952
- * `title` and `summary` are what the agent sees in the table of contents and
2953
- * decide whether it ever fetches this node, so keep them accurate.
2800
+ * `reply_mode` decides what happens with the agent's answer: `public_reply`
2801
+ * sends it to the customer, `internal_note` posts it privately where the
2802
+ * provider supports that, `none` generates without sending.
2954
2803
  *
2955
- * Send the `version` you read from `get_node`; a mismatch is rejected rather
2956
- * than overwriting someone else's edit.
2804
+ * Enabling validates that the integration is active and the assigned agent is
2805
+ * a published text agent, so create disabled while still wiring things up.
2957
2806
  */
2958
- update(parameters, options) {
2959
- const params = buildClientParams([parameters], [{ args: [
2960
- { in: 'path', key: 'kb_id' },
2961
- { in: 'path', key: 'node_id' },
2962
- { key: 'patchNodeRequest', map: 'body' }
2963
- ] }]);
2964
- return (options?.client ?? this.client).patch({
2807
+ create(parameters, options) {
2808
+ const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'integration_id' }, { key: 'createIntegrationTriggerRequest', map: 'body' }] }]);
2809
+ return (options?.client ?? this.client).post({
2965
2810
  responseStyle: 'data',
2966
2811
  security: [{ scheme: 'bearer', type: 'http' }, {
2967
2812
  in: 'cookie',
2968
2813
  name: 'talqing_session',
2969
2814
  type: 'apiKey'
2970
2815
  }],
2971
- url: '/v1/knowledge/{kb_id}/nodes/{node_id}',
2816
+ url: '/v1/integrations/{integration_id}/triggers',
2972
2817
  ...options,
2973
2818
  ...params,
2974
2819
  headers: {
@@ -2978,80 +2823,48 @@ export class Nodes extends HeyApiClient {
2978
2823
  }
2979
2824
  });
2980
2825
  }
2981
- }
2982
- export class Pages extends HeyApiClient {
2983
- /**
2984
- * List Pages
2985
- *
2986
- * List the crawled pages and how each one transcribed.
2987
- *
2988
- * Where you look when a knowledge base is missing something: a page with a
2989
- * non-`done` status and an `error` never made it in, and `content_len` of 0
2990
- * means the URL yielded nothing worth indexing.
2991
- */
2992
- list(parameters, options) {
2993
- const params = buildClientParams([parameters], [{ args: [
2994
- { in: 'path', key: 'kb_id' },
2995
- { in: 'query', key: 'limit' },
2996
- { in: 'query', key: 'offset' }
2997
- ] }]);
2998
- return (options?.client ?? this.client).get({
2999
- responseStyle: 'data',
3000
- security: [{ scheme: 'bearer', type: 'http' }, {
3001
- in: 'cookie',
3002
- name: 'talqing_session',
3003
- type: 'apiKey'
3004
- }],
3005
- url: '/v1/knowledge/{kb_id}/pages',
3006
- ...options,
3007
- ...params
3008
- });
3009
- }
3010
- }
3011
- export class Knowledge2 extends HeyApiClient {
3012
2826
  /**
3013
- * List Kbs
3014
- *
3015
- * List the workspace's knowledge bases with their build status.
2827
+ * Delete Integration Trigger
3016
2828
  *
3017
- * A knowledge base gives an agent grounded answers over crawled content. Only
3018
- * one with status `ready` can be attached to an agent, through the agent
3019
- * config's `kb_ids`.
2829
+ * Delete a trigger permanently. The agent stops receiving that event.
3020
2830
  */
3021
- list(parameters, options) {
3022
- const params = buildClientParams([parameters], [{ args: [{ in: 'query', key: 'limit' }, { in: 'query', key: 'offset' }] }]);
3023
- return (options?.client ?? this.client).get({
2831
+ delete(parameters, options) {
2832
+ const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'integration_id' }, { in: 'path', key: 'trigger_id' }] }]);
2833
+ return (options?.client ?? this.client).delete({
3024
2834
  responseStyle: 'data',
3025
2835
  security: [{ scheme: 'bearer', type: 'http' }, {
3026
2836
  in: 'cookie',
3027
2837
  name: 'talqing_session',
3028
2838
  type: 'apiKey'
3029
2839
  }],
3030
- url: '/v1/knowledge',
2840
+ url: '/v1/integrations/{integration_id}/triggers/{trigger_id}',
3031
2841
  ...options,
3032
2842
  ...params
3033
2843
  });
3034
2844
  }
3035
2845
  /**
3036
- * Create Kb
2846
+ * Patch Integration Trigger
3037
2847
  *
3038
- * Start a knowledge base by crawling one or more websites.
2848
+ * Update a trigger: reassign the agent, change reply mode, enable or
2849
+ * disable it.
3039
2850
  *
3040
- * Returns immediately with `status: discovering` — crawling takes minutes.
3041
- * Poll `get_kb` until `review`, then pass the URLs worth indexing to
3042
- * `build_kb`. `max_pages` caps how many discovery may find (default 1000) and
3043
- * `notes` guides how the content is transcribed and organized.
2851
+ * Omitted fields are left unchanged, and enabling one runs the same checks
2852
+ * creating it did.
3044
2853
  */
3045
- create(parameters, options) {
3046
- const params = buildClientParams([parameters], [{ args: [{ key: 'createKbRequest', map: 'body' }] }]);
3047
- return (options?.client ?? this.client).post({
2854
+ update(parameters, options) {
2855
+ const params = buildClientParams([parameters], [{ args: [
2856
+ { in: 'path', key: 'integration_id' },
2857
+ { in: 'path', key: 'trigger_id' },
2858
+ { key: 'patchIntegrationTriggerRequest', map: 'body' }
2859
+ ] }]);
2860
+ return (options?.client ?? this.client).patch({
3048
2861
  responseStyle: 'data',
3049
2862
  security: [{ scheme: 'bearer', type: 'http' }, {
3050
2863
  in: 'cookie',
3051
2864
  name: 'talqing_session',
3052
2865
  type: 'apiKey'
3053
2866
  }],
3054
- url: '/v1/knowledge',
2867
+ url: '/v1/integrations/{integration_id}/triggers/{trigger_id}',
3055
2868
  ...options,
3056
2869
  ...params,
3057
2870
  headers: {
@@ -3061,115 +2874,113 @@ export class Knowledge2 extends HeyApiClient {
3061
2874
  }
3062
2875
  });
3063
2876
  }
2877
+ }
2878
+ export class Integrations extends HeyApiClient {
3064
2879
  /**
3065
- * Delete Kb
2880
+ * List Integrations
3066
2881
  *
3067
- * Delete a knowledge base and everything crawled into it, permanently.
2882
+ * List the workspace's integrations with their provider, status and config.
3068
2883
  *
3069
- * Rebuilding means crawling the site again. Agents that list it in `kb_ids`
3070
- * lose those grounded answers, so detach it there first.
2884
+ * Secret values are never returned — credential fields come back as
2885
+ * `{{secrets.NAME}}` references.
3071
2886
  */
3072
- delete(parameters, options) {
3073
- const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'kb_id' }] }]);
3074
- return (options?.client ?? this.client).delete({
2887
+ list(parameters, options) {
2888
+ const params = buildClientParams([parameters], [{ args: [{ in: 'query', key: 'limit' }, { in: 'query', key: 'offset' }] }]);
2889
+ return (options?.client ?? this.client).get({
3075
2890
  responseStyle: 'data',
3076
2891
  security: [{ scheme: 'bearer', type: 'http' }, {
3077
2892
  in: 'cookie',
3078
2893
  name: 'talqing_session',
3079
2894
  type: 'apiKey'
3080
2895
  }],
3081
- url: '/v1/knowledge/{kb_id}',
2896
+ url: '/v1/integrations',
3082
2897
  ...options,
3083
2898
  ...params
3084
2899
  });
3085
2900
  }
3086
2901
  /**
3087
- * Get Kb
2902
+ * Create Integration
3088
2903
  *
3089
- * Read one knowledge base: build status, progress and content tree.
2904
+ * Create a manual integration, fully configured.
2905
+ *
2906
+ * Which of `credentials_ref`, `provider_account_info`, `mcp_config` and
2907
+ * `webhook_config` a provider needs is described by its `setup_fields` in the
2908
+ * integration catalog. Secret-bearing fields take a plaintext value — stored
2909
+ * as a workspace secret — or an existing `{{secrets.NAME}}` reference.
3090
2910
  *
3091
- * `status` walks `discovering` -> `review` -> `transcribing` -> `generating`
3092
- * -> `ready`, with `error` set if it stopped. At `review`, `discovered` holds
3093
- * the crawled URLs awaiting your selection; once ready, `tree` is the table of
3094
- * contents. This is the endpoint to poll while a build runs.
2911
+ * Leave `allowed_tools` unset to expose every tool the server lists. OAuth
2912
+ * providers are connected from the dashboard instead.
3095
2913
  */
3096
- get(parameters, options) {
3097
- const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'kb_id' }] }]);
3098
- return (options?.client ?? this.client).get({
2914
+ create(parameters, options) {
2915
+ const params = buildClientParams([parameters], [{ args: [{ key: 'createIntegrationRequest', map: 'body' }] }]);
2916
+ return (options?.client ?? this.client).post({
3099
2917
  responseStyle: 'data',
3100
2918
  security: [{ scheme: 'bearer', type: 'http' }, {
3101
2919
  in: 'cookie',
3102
2920
  name: 'talqing_session',
3103
2921
  type: 'apiKey'
3104
2922
  }],
3105
- url: '/v1/knowledge/{kb_id}',
2923
+ url: '/v1/integrations',
3106
2924
  ...options,
3107
- ...params
2925
+ ...params,
2926
+ headers: {
2927
+ 'Content-Type': 'application/json',
2928
+ ...options?.headers,
2929
+ ...params.headers
2930
+ }
3108
2931
  });
3109
2932
  }
3110
2933
  /**
3111
- * Build Kb
2934
+ * Integration Catalog
3112
2935
  *
3113
- * Index the chosen pages, then write the table of contents.
2936
+ * List the providers that can be integrated, and how to connect each one.
3114
2937
  *
3115
- * Call this once the knowledge base reaches `review`, passing the subset of
3116
- * `discovered` URLs worth indexing — the KB is only as good as that choice.
3117
- * Returns as soon as the work is queued; poll `get_kb` until `ready`, which is
3118
- * when it can be attached to an agent.
2938
+ * `auth_type` says which path a provider takes: `manual` through this API,
2939
+ * `oauth` from the dashboard. `setup_fields` is the authoritative list of what
2940
+ * each manual provider requires — read it rather than guessing. `capabilities`
2941
+ * says whether it serves tools (MCP) or a messaging channel (triggers).
3119
2942
  */
3120
- build(parameters, options) {
3121
- const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'kb_id' }, { key: 'buildKbRequest', map: 'body' }] }]);
3122
- return (options?.client ?? this.client).post({
2943
+ catalog(parameters, options) {
2944
+ const params = buildClientParams([parameters], [{ args: [{ in: 'query', key: 'limit' }, { in: 'query', key: 'offset' }] }]);
2945
+ return (options?.client ?? this.client).get({
3123
2946
  responseStyle: 'data',
3124
2947
  security: [{ scheme: 'bearer', type: 'http' }, {
3125
2948
  in: 'cookie',
3126
2949
  name: 'talqing_session',
3127
2950
  type: 'apiKey'
3128
2951
  }],
3129
- url: '/v1/knowledge/{kb_id}/build',
2952
+ url: '/v1/integrations/catalog',
3130
2953
  ...options,
3131
- ...params,
3132
- headers: {
3133
- 'Content-Type': 'application/json',
3134
- ...options?.headers,
3135
- ...params.headers
3136
- }
2954
+ ...params
3137
2955
  });
3138
2956
  }
3139
2957
  /**
3140
- * Events
3141
- *
3142
- * Watch one knowledge base build: `snapshot` first, then `progress` and `status`.
2958
+ * Delete Integration
3143
2959
  *
3144
- * `progress` carries the per-stage counts, `status` the terminal verdict
3145
- * (`ready`, or an `error`). The same state is readable at any time with
3146
- * `get_kb`; this is the live view of it.
2960
+ * Delete an integration and its triggers permanently.
3147
2961
  */
3148
- events(parameters, options) {
3149
- const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'kb_id' }] }]);
3150
- return (options?.client ?? this.client).sse.get({
2962
+ delete(parameters, options) {
2963
+ const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'integration_id' }] }]);
2964
+ return (options?.client ?? this.client).delete({
3151
2965
  responseStyle: 'data',
3152
2966
  security: [{ scheme: 'bearer', type: 'http' }, {
3153
2967
  in: 'cookie',
3154
2968
  name: 'talqing_session',
3155
2969
  type: 'apiKey'
3156
2970
  }],
3157
- url: '/v1/knowledge/{kb_id}/events',
2971
+ url: '/v1/integrations/{integration_id}',
3158
2972
  ...options,
3159
2973
  ...params
3160
2974
  });
3161
2975
  }
3162
2976
  /**
3163
- * Get Kb Prompt
3164
- *
3165
- * The table of contents exactly as an agent using this KB is given it.
2977
+ * Get Integration
3166
2978
  *
3167
- * Read it to judge what the agent can actually find — if a topic reads
3168
- * vaguely here, the agent will not know to fetch it. `chars` is how much of
3169
- * the agent's context this KB occupies.
2979
+ * Fetch one integration: provider, status, structured config, trigger
2980
+ * capabilities and inbound webhook setup state.
3170
2981
  */
3171
- prompt(parameters, options) {
3172
- const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'kb_id' }] }]);
2982
+ get(parameters, options) {
2983
+ const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'integration_id' }] }]);
3173
2984
  return (options?.client ?? this.client).get({
3174
2985
  responseStyle: 'data',
3175
2986
  security: [{ scheme: 'bearer', type: 'http' }, {
@@ -3177,39 +2988,48 @@ export class Knowledge2 extends HeyApiClient {
3177
2988
  name: 'talqing_session',
3178
2989
  type: 'apiKey'
3179
2990
  }],
3180
- url: '/v1/knowledge/{kb_id}/prompt',
2991
+ url: '/v1/integrations/{integration_id}',
3181
2992
  ...options,
3182
2993
  ...params
3183
2994
  });
3184
2995
  }
3185
2996
  /**
3186
- * Regenerate Toc
2997
+ * Patch Integration
3187
2998
  *
3188
- * Rewrite the table of contents from the pages already indexed.
2999
+ * Update an integration. Omitted fields are left unchanged.
3189
3000
  *
3190
- * The repair for a knowledge base whose structure came out wrong, or whose
3191
- * build failed at the last stage: it re-runs only that stage, so the site is
3192
- * not crawled or transcribed again.
3001
+ * Sending `credentials_ref` rotates the credential. Only `active` integrations
3002
+ * can be attached to agents or serve triggers.
3003
+ *
3004
+ * `allowed_tools` replaces the approved list wholesale: exactly those tools
3005
+ * become callable by every agent this integration is attached to. It cannot be
3006
+ * emptied — an agent that should call nothing is an integration that should be
3007
+ * disabled.
3193
3008
  */
3194
- regenerateToc(parameters, options) {
3195
- const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'kb_id' }] }]);
3196
- return (options?.client ?? this.client).post({
3009
+ update(parameters, options) {
3010
+ const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'integration_id' }, { key: 'patchIntegrationRequest', map: 'body' }] }]);
3011
+ return (options?.client ?? this.client).patch({
3197
3012
  responseStyle: 'data',
3198
3013
  security: [{ scheme: 'bearer', type: 'http' }, {
3199
3014
  in: 'cookie',
3200
3015
  name: 'talqing_session',
3201
3016
  type: 'apiKey'
3202
3017
  }],
3203
- url: '/v1/knowledge/{kb_id}/toc',
3018
+ url: '/v1/integrations/{integration_id}',
3204
3019
  ...options,
3205
- ...params
3020
+ ...params,
3021
+ headers: {
3022
+ 'Content-Type': 'application/json',
3023
+ ...options?.headers,
3024
+ ...params.headers
3025
+ }
3206
3026
  });
3207
3027
  }
3208
- get nodes() {
3209
- return this._nodes ?? (this._nodes = new Nodes({ client: this.client }));
3028
+ get mcpTools() {
3029
+ return this._mcpTools ?? (this._mcpTools = new McpTools({ client: this.client }));
3210
3030
  }
3211
- get pages() {
3212
- return this._pages ?? (this._pages = new Pages({ client: this.client }));
3031
+ get triggers() {
3032
+ return this._triggers ?? (this._triggers = new Triggers({ client: this.client }));
3213
3033
  }
3214
3034
  }
3215
3035
  export class Observability extends HeyApiClient {
@@ -4962,8 +4782,8 @@ export class Batches3 extends HeyApiClient {
4962
4782
  * Send every ready row. **This messages real people and cannot be undone.**
4963
4783
  *
4964
4784
  * `start_at` schedules it, `window` holds it to business hours, and
4965
- * `send_daily_cap` (default 250, Meta's lowest tier) and `send_gap_seconds`
4966
- * pace it.
4785
+ * `send_daily_cap` (default a fixed 250, Meta's lowest tier; or a ramp) and
4786
+ * `send_gap_seconds` pace it.
4967
4787
  */
4968
4788
  send(parameters, options) {
4969
4789
  const params = buildClientParams([parameters], [{ args: [{ in: 'path', key: 'batch_id' }, { key: 'sendWhatsAppBatchRequest', map: 'body' }] }]);
@@ -5097,12 +4917,12 @@ export class TalqingApi extends HeyApiClient {
5097
4917
  get email() {
5098
4918
  return this._email ?? (this._email = new Email({ client: this.client }));
5099
4919
  }
4920
+ get faqs() {
4921
+ return this._faqs ?? (this._faqs = new Faqs({ client: this.client }));
4922
+ }
5100
4923
  get integrations() {
5101
4924
  return this._integrations ?? (this._integrations = new Integrations({ client: this.client }));
5102
4925
  }
5103
- get knowledge() {
5104
- return this._knowledge ?? (this._knowledge = new Knowledge2({ client: this.client }));
5105
- }
5106
4926
  get observability() {
5107
4927
  return this._observability ?? (this._observability = new Observability({ client: this.client }));
5108
4928
  }