autotouch-cli 0.2.85__tar.gz → 0.2.86__tar.gz

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 (55) hide show
  1. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/PKG-INFO +1 -1
  2. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/cli.py +1 -0
  3. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/columns.py +76 -0
  4. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/data/CLI_REFERENCE.md +7 -1
  5. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/data/cli-manifest.json +51 -4
  6. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/templates.py +28 -2
  7. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli.egg-info/PKG-INFO +1 -1
  8. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_shared/provider_registry.py +2 -0
  9. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/pyproject.toml +1 -1
  10. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/MANIFEST.in +0 -0
  11. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/README.md +0 -0
  12. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/__init__.py +0 -0
  13. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/cli_contracts.py +0 -0
  14. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/__init__.py +0 -0
  15. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/agents.py +0 -0
  16. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/auth.py +0 -0
  17. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/cells.py +0 -0
  18. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/jobs.py +0 -0
  19. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/leads.py +0 -0
  20. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/linkedin.py +0 -0
  21. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/list_build.py +0 -0
  22. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/prompts.py +0 -0
  23. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/rows.py +0 -0
  24. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/search.py +0 -0
  25. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/sequences.py +0 -0
  26. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/tables.py +0 -0
  27. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/tasks.py +0 -0
  28. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/webhooks.py +0 -0
  29. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/commands/workspace_secrets.py +0 -0
  30. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/core/__init__.py +0 -0
  31. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/core/auth.py +0 -0
  32. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/core/config.py +0 -0
  33. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/core/csv_import.py +0 -0
  34. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/core/http.py +0 -0
  35. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/core/io.py +0 -0
  36. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/core/output.py +0 -0
  37. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/core/polling.py +0 -0
  38. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/core/run.py +0 -0
  39. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/core/validation.py +0 -0
  40. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/exceptions.py +0 -0
  41. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/mongo_status.py +0 -0
  42. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/parser.py +0 -0
  43. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/parser_groups.py +0 -0
  44. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli/sequence_support.py +0 -0
  45. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli.egg-info/SOURCES.txt +0 -0
  46. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli.egg-info/dependency_links.txt +0 -0
  47. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli.egg-info/entry_points.txt +0 -0
  48. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli.egg-info/requires.txt +0 -0
  49. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_cli.egg-info/top_level.txt +0 -0
  50. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_shared/__init__.py +0 -0
  51. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_shared/linkedin_contract.py +0 -0
  52. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_shared/linkedin_filters.py +0 -0
  53. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_shared/list_build_contract.py +0 -0
  54. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/autotouch_shared/search_contract.py +0 -0
  55. {autotouch_cli-0.2.85 → autotouch_cli-0.2.86}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: autotouch-cli
3
- Version: 0.2.85
3
+ Version: 0.2.86
4
4
  Summary: Autotouch Smart Table CLI
5
5
  Project-URL: Homepage, https://app.autotouch.ai
6
6
  Project-URL: Documentation, https://github.com/nicolonic/autotouch_main/tree/main/docs/research-table/reference
@@ -2398,6 +2398,7 @@ cmd_auth_schema = _bound("auth_schema")
2398
2398
  cmd_auth_whoami = _bound("auth_whoami")
2399
2399
  cmd_cells_get = _bound("cells_get")
2400
2400
  cmd_columns_create = _bound("columns_create")
2401
+ cmd_columns_update = _bound("columns_update")
2401
2402
  cmd_columns_move = _bound("columns_move")
2402
2403
  cmd_columns_projections = _bound("columns_projections")
2403
2404
  cmd_columns_run_next = _bound("columns_run_next")
@@ -7,6 +7,16 @@ from typing import Any, Callable, Dict, Sequence
7
7
  from autotouch_cli.exceptions import AutotouchCreditError, AutotouchInputError
8
8
 
9
9
 
10
+ _RESEARCH_MODE_ALIASES = {
11
+ "lite": "lite",
12
+ "light": "lite",
13
+ "quick": "lite",
14
+ "heavy": "heavy",
15
+ "deep": "heavy",
16
+ "thorough": "heavy",
17
+ }
18
+
19
+
10
20
  @dataclass(frozen=True)
11
21
  class ColumnCommandRuntime:
12
22
  resolve_token: Callable[[str | None, bool], str | None]
@@ -52,6 +62,54 @@ def _apply_column_position_overrides(
52
62
  return merged
53
63
 
54
64
 
65
+ def _normalize_research_mode_option(value: Any) -> str:
66
+ normalized = str(value or "").strip().lower()
67
+ if normalized in _RESEARCH_MODE_ALIASES:
68
+ return _RESEARCH_MODE_ALIASES[normalized]
69
+ raise AutotouchInputError("--research-mode must be one of: lite, heavy")
70
+
71
+
72
+ def _apply_research_mode_overrides(
73
+ payload: Dict[str, Any],
74
+ args: argparse.Namespace,
75
+ *,
76
+ force_agent_on_explicit: bool,
77
+ ) -> Dict[str, Any]:
78
+ explicit_value = getattr(args, "research_mode", None)
79
+ config = payload.get("config")
80
+ if not isinstance(config, dict):
81
+ if explicit_value is None:
82
+ return payload
83
+ config = {}
84
+
85
+ current_mode = str(config.get("mode") or "").strip().lower()
86
+ has_research_mode = (
87
+ config.get("researchMode") is not None
88
+ or config.get("research_mode") is not None
89
+ )
90
+ should_default_agent_lite = current_mode == "agent" and not has_research_mode
91
+ should_clean_agent_config = current_mode == "agent" and has_research_mode
92
+ if explicit_value is None and not should_default_agent_lite and not should_clean_agent_config:
93
+ return payload
94
+
95
+ merged = dict(payload)
96
+ next_config = dict(config)
97
+ if explicit_value is not None:
98
+ if force_agent_on_explicit:
99
+ next_config["mode"] = "agent"
100
+ next_config["researchMode"] = _normalize_research_mode_option(explicit_value)
101
+ elif config.get("researchMode") is not None:
102
+ next_config["researchMode"] = _normalize_research_mode_option(config.get("researchMode"))
103
+ elif config.get("research_mode") is not None:
104
+ next_config["researchMode"] = _normalize_research_mode_option(config.get("research_mode"))
105
+ else:
106
+ next_config["researchMode"] = "lite"
107
+ next_config.pop("research_mode", None)
108
+ next_config.pop("lite", None)
109
+ merged["config"] = next_config
110
+ return merged
111
+
112
+
55
113
  def _normalize_http_request_test_payload(payload: Dict[str, Any]) -> Dict[str, Any]:
56
114
  candidate = payload
57
115
  config = payload.get("config")
@@ -111,6 +169,7 @@ def cmd_columns_create(args: argparse.Namespace, *, runtime: ColumnCommandRuntim
111
169
  allow_position=True,
112
170
  allow_neighbors=True,
113
171
  )
172
+ payload = _apply_research_mode_overrides(payload, args, force_agent_on_explicit=True)
114
173
  runtime.validate_column_contract_payload_or_exit(payload)
115
174
  runtime.validate_add_to_crm_create_payload(payload)
116
175
  data = runtime.request_api(
@@ -156,6 +215,7 @@ def cmd_columns_update(args: argparse.Namespace, *, runtime: ColumnCommandRuntim
156
215
  allow_position=True,
157
216
  allow_neighbors=False,
158
217
  )
218
+ payload = _apply_research_mode_overrides(payload, args, force_agent_on_explicit=False)
159
219
  runtime.validate_column_contract_payload_or_exit(payload)
160
220
  data = runtime.request_api(
161
221
  "PATCH",
@@ -401,6 +461,11 @@ def register_columns_subcommands(
401
461
  pcc.add_argument("--position", type=float, help="Explicit numeric position override")
402
462
  pcc.add_argument("--after-column-id", help="Place the new column after this existing column id")
403
463
  pcc.add_argument("--before-column-id", help="Place the new column before this existing column id")
464
+ pcc.add_argument(
465
+ "--research-mode",
466
+ choices=["lite", "heavy"],
467
+ help="For LLM Research Agent columns, set config.researchMode. Omitted agent columns default to lite.",
468
+ )
404
469
  add_api_common_arguments(pcc)
405
470
  pcc.set_defaults(func=handlers["create"])
406
471
 
@@ -417,6 +482,11 @@ def register_columns_subcommands(
417
482
  pcu.add_argument("--data-json", help="ColumnUpdate payload JSON")
418
483
  pcu.add_argument("--data-file", help="ColumnUpdate payload file path")
419
484
  pcu.add_argument("--position", type=float, help="Explicit numeric position override")
485
+ pcu.add_argument(
486
+ "--research-mode",
487
+ choices=["lite", "heavy"],
488
+ help="Set config.researchMode. Include config.mode=agent when switching a Quick LLM column to Research Agent.",
489
+ )
420
490
  add_api_common_arguments(pcu)
421
491
  pcu.set_defaults(func=handlers["update"])
422
492
 
@@ -545,6 +615,12 @@ def register_columns_subcommands(
545
615
 
546
616
  pcre = col_sub.add_parser("recipe", help="Print copy-ready ColumnCreate payload templates")
547
617
  pcre.add_argument("--type", choices=["all", *column_recipe_types], default="all")
618
+ pcre.add_argument(
619
+ "--research-mode",
620
+ choices=["lite", "heavy"],
621
+ default="lite",
622
+ help="Research Agent depth for LLM recipes (default: lite; heavy costs more per row)",
623
+ )
548
624
  pcre.add_argument("--out-file", help="Write template JSON to file (single type writes payload only)")
549
625
  add_output_formatting_arguments(pcre)
550
626
  pcre.set_defaults(func=handlers["recipe"])
@@ -1,6 +1,6 @@
1
1
  # Autotouch CLI Reference
2
2
 
3
- Generated from the installed parser for `autotouch-cli` `0.2.85`.
3
+ Generated from the installed parser for `autotouch-cli` `0.2.86`.
4
4
  Manifest schema version: `2`.
5
5
 
6
6
  ## Output Modes
@@ -1079,6 +1079,7 @@ For llm_enrichment, there are two valid authoring paths:
1079
1079
  [--data-file DATA_FILE] [--position POSITION]
1080
1080
  [--after-column-id AFTER_COLUMN_ID]
1081
1081
  [--before-column-id BEFORE_COLUMN_ID]
1082
+ [--research-mode {lite,heavy}]
1082
1083
  [--base-url BASE_URL] [--token TOKEN]
1083
1084
  [--use-x-api-key] [--timeout TIMEOUT]
1084
1085
  [--output {json,ndjson,human}] [--compact]
@@ -1100,6 +1101,7 @@ The runnable prompt is always config.advancedPrompt before execution.
1100
1101
  - `--position` (kind=number): Explicit numeric position override
1101
1102
  - `--after-column-id` (kind=string): Place the new column after this existing column id
1102
1103
  - `--before-column-id` (kind=string): Place the new column before this existing column id
1104
+ - `--research-mode` (kind=string; choices=lite,heavy): For LLM Research Agent columns, set config.researchMode. Omitted agent columns default to lite.
1103
1105
  - `--base-url` (kind=string; default=https://app.autotouch.ai): API base URL (default: https://app.autotouch.ai)
1104
1106
  - `--token` (kind=string; sensitive): Developer API key / JWT token
1105
1107
  - `--use-x-api-key` (kind=boolean; when omitted=False; when present=True): Send token via X-API-Key header
@@ -1321,12 +1323,14 @@ Print copy-ready ColumnCreate payload templates
1321
1323
  - Example:
1322
1324
  - `autotouch columns recipe [-h]
1323
1325
  [--type {all,formatter,llm_enrichment,email_finder,phone_finder,lead_finder,add_to_crm,sync_to_table,add_to_sequence,http_request,add_to_leads,sync_to_leads}]
1326
+ [--research-mode {lite,heavy}]
1324
1327
  [--out-file OUT_FILE]
1325
1328
  [--output {json,ndjson,human}] [--compact]
1326
1329
  [--select SELECT |
1327
1330
  --json-pointer JSON_POINTER]`
1328
1331
  - Options:
1329
1332
  - `--type` (kind=string; choices=all,formatter,llm_enrichment,email_finder,phone_finder,lead_finder,add_to_crm,sync_to_table,add_to_sequence,http_request,add_to_leads,sync_to_leads; default=all)
1333
+ - `--research-mode` (kind=string; choices=lite,heavy; default=lite): Research Agent depth for LLM recipes (default: lite; heavy costs more per row)
1330
1334
  - `--out-file` (kind=file; input=file): Write template JSON to file (single type writes payload only)
1331
1335
  - `--output` (kind=string; choices=json,ndjson,human; default=json): Output mode
1332
1336
  - `--compact` (kind=boolean; when omitted=False; when present=True): Print compact JSON
@@ -1538,6 +1542,7 @@ Update a column definition. Nested config keys merge into the existing config, s
1538
1542
  - `autotouch columns update [-h] --table-id TABLE_ID --column-id COLUMN_ID
1539
1543
  [--data-json DATA_JSON]
1540
1544
  [--data-file DATA_FILE] [--position POSITION]
1545
+ [--research-mode {lite,heavy}]
1541
1546
  [--base-url BASE_URL] [--token TOKEN]
1542
1547
  [--use-x-api-key] [--timeout TIMEOUT]
1543
1548
  [--output {json,ndjson,human}] [--compact]
@@ -1549,6 +1554,7 @@ Update a column definition. Nested config keys merge into the existing config, s
1549
1554
  - `--data-json` (kind=json; input=json): ColumnUpdate payload JSON
1550
1555
  - `--data-file` (kind=file; input=file): ColumnUpdate payload file path
1551
1556
  - `--position` (kind=number): Explicit numeric position override
1557
+ - `--research-mode` (kind=string; choices=lite,heavy): Set config.researchMode. Include config.mode=agent when switching a Quick LLM column to Research Agent.
1552
1558
  - `--base-url` (kind=string; default=https://app.autotouch.ai): API base URL (default: https://app.autotouch.ai)
1553
1559
  - `--token` (kind=string; sensitive): Developer API key / JWT token
1554
1560
  - `--use-x-api-key` (kind=boolean; when omitted=False; when present=True): Send token via X-API-Key header
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.2.85",
2
+ "version": "0.2.86",
3
3
  "manifest_schema_version": 2,
4
4
  "entry_points": {
5
5
  "autotouch": "autotouch_cli.cli:main",
@@ -14852,6 +14852,21 @@
14852
14852
  ],
14853
14853
  "takes_value": true
14854
14854
  },
14855
+ {
14856
+ "dest": "research_mode",
14857
+ "required": false,
14858
+ "help": "For LLM Research Agent columns, set config.researchMode. Omitted agent columns default to lite.",
14859
+ "kind": "string",
14860
+ "action": "store",
14861
+ "choices": [
14862
+ "lite",
14863
+ "heavy"
14864
+ ],
14865
+ "flags": [
14866
+ "--research-mode"
14867
+ ],
14868
+ "takes_value": true
14869
+ },
14855
14870
  {
14856
14871
  "dest": "base_url",
14857
14872
  "required": false,
@@ -15005,7 +15020,7 @@
15005
15020
  },
15006
15021
  "availability": null,
15007
15022
  "examples": [
15008
- "autotouch columns create [-h] --table-id TABLE_ID\n [--data-json DATA_JSON]\n [--data-file DATA_FILE] [--position POSITION]\n [--after-column-id AFTER_COLUMN_ID]\n [--before-column-id BEFORE_COLUMN_ID]\n [--base-url BASE_URL] [--token TOKEN]\n [--use-x-api-key] [--timeout TIMEOUT]\n [--output {json,ndjson,human}] [--compact]\n [--select SELECT |\n --json-pointer JSON_POINTER] [--verbose]"
15023
+ "autotouch columns create [-h] --table-id TABLE_ID\n [--data-json DATA_JSON]\n [--data-file DATA_FILE] [--position POSITION]\n [--after-column-id AFTER_COLUMN_ID]\n [--before-column-id BEFORE_COLUMN_ID]\n [--research-mode {lite,heavy}]\n [--base-url BASE_URL] [--token TOKEN]\n [--use-x-api-key] [--timeout TIMEOUT]\n [--output {json,ndjson,human}] [--compact]\n [--select SELECT |\n --json-pointer JSON_POINTER] [--verbose]"
15009
15024
  ],
15010
15025
  "stability": "stable",
15011
15026
  "handler": "_fn"
@@ -15084,6 +15099,21 @@
15084
15099
  ],
15085
15100
  "takes_value": true
15086
15101
  },
15102
+ {
15103
+ "dest": "research_mode",
15104
+ "required": false,
15105
+ "help": "Set config.researchMode. Include config.mode=agent when switching a Quick LLM column to Research Agent.",
15106
+ "kind": "string",
15107
+ "action": "store",
15108
+ "choices": [
15109
+ "lite",
15110
+ "heavy"
15111
+ ],
15112
+ "flags": [
15113
+ "--research-mode"
15114
+ ],
15115
+ "takes_value": true
15116
+ },
15087
15117
  {
15088
15118
  "dest": "base_url",
15089
15119
  "required": false,
@@ -15237,7 +15267,7 @@
15237
15267
  },
15238
15268
  "availability": null,
15239
15269
  "examples": [
15240
- "autotouch columns update [-h] --table-id TABLE_ID --column-id COLUMN_ID\n [--data-json DATA_JSON]\n [--data-file DATA_FILE] [--position POSITION]\n [--base-url BASE_URL] [--token TOKEN]\n [--use-x-api-key] [--timeout TIMEOUT]\n [--output {json,ndjson,human}] [--compact]\n [--select SELECT |\n --json-pointer JSON_POINTER] [--verbose]"
15270
+ "autotouch columns update [-h] --table-id TABLE_ID --column-id COLUMN_ID\n [--data-json DATA_JSON]\n [--data-file DATA_FILE] [--position POSITION]\n [--research-mode {lite,heavy}]\n [--base-url BASE_URL] [--token TOKEN]\n [--use-x-api-key] [--timeout TIMEOUT]\n [--output {json,ndjson,human}] [--compact]\n [--select SELECT |\n --json-pointer JSON_POINTER] [--verbose]"
15241
15271
  ],
15242
15272
  "stability": "stable",
15243
15273
  "handler": "_fn"
@@ -17564,6 +17594,23 @@
17564
17594
  ],
17565
17595
  "takes_value": true
17566
17596
  },
17597
+ {
17598
+ "dest": "research_mode",
17599
+ "required": false,
17600
+ "help": "Research Agent depth for LLM recipes (default: lite; heavy costs more per row)",
17601
+ "kind": "string",
17602
+ "action": "store",
17603
+ "choices": [
17604
+ "lite",
17605
+ "heavy"
17606
+ ],
17607
+ "default_when_omitted": "lite",
17608
+ "default": "lite",
17609
+ "flags": [
17610
+ "--research-mode"
17611
+ ],
17612
+ "takes_value": true
17613
+ },
17567
17614
  {
17568
17615
  "dest": "out_file",
17569
17616
  "required": false,
@@ -17663,7 +17710,7 @@
17663
17710
  },
17664
17711
  "availability": null,
17665
17712
  "examples": [
17666
- "autotouch columns recipe [-h]\n [--type {all,formatter,llm_enrichment,email_finder,phone_finder,lead_finder,add_to_crm,sync_to_table,add_to_sequence,http_request,add_to_leads,sync_to_leads}]\n [--out-file OUT_FILE]\n [--output {json,ndjson,human}] [--compact]\n [--select SELECT |\n --json-pointer JSON_POINTER]"
17713
+ "autotouch columns recipe [-h]\n [--type {all,formatter,llm_enrichment,email_finder,phone_finder,lead_finder,add_to_crm,sync_to_table,add_to_sequence,http_request,add_to_leads,sync_to_leads}]\n [--research-mode {lite,heavy}]\n [--out-file OUT_FILE]\n [--output {json,ndjson,human}] [--compact]\n [--select SELECT |\n --json-pointer JSON_POINTER]"
17667
17714
  ],
17668
17715
  "stability": "stable",
17669
17716
  "handler": "_fn"
@@ -917,6 +917,32 @@ def _recipe_payload(recipe_type: str) -> Dict[str, Any]:
917
917
  return _json_copy(payload)
918
918
 
919
919
 
920
+ def _apply_recipe_research_mode(payload: Dict[str, Any], research_mode: Any) -> Dict[str, Any]:
921
+ config = payload.get("config")
922
+ if not isinstance(config, dict):
923
+ return payload
924
+ if str(config.get("mode") or "").strip().lower() != "agent":
925
+ return payload
926
+ mode = str(research_mode or "lite").strip().lower()
927
+ if mode not in {"lite", "heavy"}:
928
+ mode = "lite"
929
+ payload = dict(payload)
930
+ payload["config"] = {
931
+ **config,
932
+ "researchMode": mode,
933
+ }
934
+ payload["config"].pop("research_mode", None)
935
+ payload["config"].pop("lite", None)
936
+ return payload
937
+
938
+
939
+ def _recipe_payload_for_args(recipe_type: str, args: argparse.Namespace) -> Dict[str, Any]:
940
+ return _apply_recipe_research_mode(
941
+ _recipe_payload(recipe_type),
942
+ getattr(args, "research_mode", "lite"),
943
+ )
944
+
945
+
920
946
  def _sequence_recipe_payload(recipe_type: str) -> Dict[str, Any]:
921
947
  payload = SEQUENCE_RECIPES.get(recipe_type)
922
948
  if not payload:
@@ -1639,7 +1665,7 @@ def emit_workflows_scaffold(args: argparse.Namespace, runtime: TemplateRuntime)
1639
1665
  def emit_columns_recipe(args: argparse.Namespace, runtime: TemplateRuntime) -> None:
1640
1666
  selected_type = str(args.type or "all")
1641
1667
  if selected_type == "all":
1642
- recipes = {name: _recipe_payload(name) for name in COLUMN_RECIPE_TYPES}
1668
+ recipes = {name: _recipe_payload_for_args(name, args) for name in COLUMN_RECIPE_TYPES}
1643
1669
  output = {
1644
1670
  "recipes": recipes,
1645
1671
  "notes": COLUMN_RECIPE_NOTES,
@@ -1662,7 +1688,7 @@ def emit_columns_recipe(args: argparse.Namespace, runtime: TemplateRuntime) -> N
1662
1688
  runtime.print_json(output, getattr(args, "compact", False))
1663
1689
  return
1664
1690
 
1665
- payload = _recipe_payload(selected_type)
1691
+ payload = _recipe_payload_for_args(selected_type, args)
1666
1692
  output_single = {
1667
1693
  "type": selected_type,
1668
1694
  "payload": payload,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: autotouch-cli
3
- Version: 0.2.85
3
+ Version: 0.2.86
4
4
  Summary: Autotouch Smart Table CLI
5
5
  Project-URL: Homepage, https://app.autotouch.ai
6
6
  Project-URL: Documentation, https://github.com/nicolonic/autotouch_main/tree/main/docs/research-table/reference
@@ -378,6 +378,7 @@ _PROVIDER_CONTRACTS: Tuple[ResearchTableProviderContract, ...] = (
378
378
  "config": {
379
379
  "instructions": "Research the company in this row and return JSON with icp_fit, summary, and risks.",
380
380
  "mode": "agent",
381
+ "researchMode": "lite",
381
382
  "temperature": 0.7,
382
383
  "promptSource": "generated",
383
384
  "useCompanyContext": True,
@@ -397,6 +398,7 @@ _PROVIDER_CONTRACTS: Tuple[ResearchTableProviderContract, ...] = (
397
398
  "Runtime only injects values for placeholders the prompt explicitly references.",
398
399
  "Manual/basic prompts should use explicit placeholders like {{company_name}}, {{domain}}, or {{user_value_proposition}} when those values are needed.",
399
400
  "Agent mode is JSON-oriented.",
401
+ "Agent research depth lives in config.researchMode and defaults to lite; set heavy only when the broader 2-credit research pass is needed.",
400
402
  "Basic mode can be text or JSON; JSON requires dataType=json.",
401
403
  ),
402
404
  column_type={
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "autotouch-cli"
7
- version = "0.2.85"
7
+ version = "0.2.86"
8
8
  description = "Autotouch Smart Table CLI"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
File without changes
File without changes