autotouch-cli 0.2.60__tar.gz → 0.2.61__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.
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/PKG-INFO +1 -1
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/commands/columns.py +16 -1
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/data/CLI_REFERENCE.md +15 -1
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/data/cli-manifest.json +3 -3
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli.egg-info/PKG-INFO +1 -1
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_shared/provider_registry.py +43 -2
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/pyproject.toml +1 -1
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/MANIFEST.in +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/README.md +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/__init__.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/cli.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/cli_contracts.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/commands/__init__.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/commands/auth.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/commands/cells.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/commands/jobs.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/commands/leads.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/commands/linkedin.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/commands/prompts.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/commands/rows.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/commands/search.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/commands/sequences.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/commands/tables.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/commands/tasks.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/commands/webhooks.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/commands/workspace_secrets.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/core/__init__.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/core/auth.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/core/config.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/core/csv_import.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/core/http.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/core/io.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/core/output.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/core/polling.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/core/run.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/core/validation.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/exceptions.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/mongo_status.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/parser.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/parser_groups.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/sequence_support.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli/templates.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli.egg-info/SOURCES.txt +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli.egg-info/dependency_links.txt +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli.egg-info/entry_points.txt +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli.egg-info/requires.txt +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_cli.egg-info/top_level.txt +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_shared/__init__.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_shared/linkedin_contract.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/autotouch_shared/search_contract.py +0 -0
- {autotouch_cli-0.2.60 → autotouch_cli-0.2.61}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: autotouch-cli
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.61
|
|
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
|
|
@@ -379,7 +379,22 @@ def register_columns_subcommands(
|
|
|
379
379
|
add_api_common_arguments(pcl)
|
|
380
380
|
pcl.set_defaults(func=handlers["list"])
|
|
381
381
|
|
|
382
|
-
pcc = col_sub.add_parser(
|
|
382
|
+
pcc = col_sub.add_parser(
|
|
383
|
+
"create",
|
|
384
|
+
help="Create a column",
|
|
385
|
+
description=(
|
|
386
|
+
"Create a column from a ColumnCreate payload.\n"
|
|
387
|
+
"For llm_enrichment, there are two valid authoring paths:\n"
|
|
388
|
+
"- generated path: send config.instructions and let the API compile config.advancedPrompt\n"
|
|
389
|
+
"- manual path: send config.advancedPrompt directly when you want exact prompt control"
|
|
390
|
+
),
|
|
391
|
+
epilog=(
|
|
392
|
+
"Recommended flow for llm_enrichment:\n\n"
|
|
393
|
+
"autotouch columns recipe --type llm_enrichment --output human\n\n"
|
|
394
|
+
"The runnable prompt is always config.advancedPrompt before execution."
|
|
395
|
+
),
|
|
396
|
+
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
397
|
+
)
|
|
383
398
|
pcc.add_argument("--table-id", required=True)
|
|
384
399
|
pcc.add_argument("--data-json", help="ColumnCreate payload JSON")
|
|
385
400
|
pcc.add_argument("--data-file", help="ColumnCreate payload file path")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Autotouch CLI Reference
|
|
2
2
|
|
|
3
|
-
Generated from the installed parser for `autotouch-cli` `0.2.
|
|
3
|
+
Generated from the installed parser for `autotouch-cli` `0.2.61`.
|
|
4
4
|
Manifest schema version: `2`.
|
|
5
5
|
|
|
6
6
|
## Output Modes
|
|
@@ -653,6 +653,11 @@ Column operations
|
|
|
653
653
|
|
|
654
654
|
Create a column
|
|
655
655
|
|
|
656
|
+
Create a column from a ColumnCreate payload.
|
|
657
|
+
For llm_enrichment, there are two valid authoring paths:
|
|
658
|
+
- generated path: send config.instructions and let the API compile config.advancedPrompt
|
|
659
|
+
- manual path: send config.advancedPrompt directly when you want exact prompt control
|
|
660
|
+
|
|
656
661
|
- Auth: `developer_key_or_user_session`
|
|
657
662
|
- Stability: `stable`
|
|
658
663
|
- Destructive: `no`
|
|
@@ -669,6 +674,15 @@ Create a column
|
|
|
669
674
|
[--output {json,ndjson,human}] [--compact]
|
|
670
675
|
[--select SELECT |
|
|
671
676
|
--json-pointer JSON_POINTER] [--verbose]`
|
|
677
|
+
- Notes:
|
|
678
|
+
|
|
679
|
+
```text
|
|
680
|
+
Recommended flow for llm_enrichment:
|
|
681
|
+
|
|
682
|
+
autotouch columns recipe --type llm_enrichment --output human
|
|
683
|
+
|
|
684
|
+
The runnable prompt is always config.advancedPrompt before execution.
|
|
685
|
+
```
|
|
672
686
|
- Options:
|
|
673
687
|
- `--table-id` (required; kind=string)
|
|
674
688
|
- `--data-json` (kind=json; input=json): ColumnCreate payload JSON
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.2.
|
|
2
|
+
"version": "0.2.61",
|
|
3
3
|
"manifest_schema_version": 2,
|
|
4
4
|
"entry_points": {
|
|
5
5
|
"autotouch": "autotouch_cli.cli:main",
|
|
@@ -14777,8 +14777,8 @@
|
|
|
14777
14777
|
"aliases": [],
|
|
14778
14778
|
"group": "columns",
|
|
14779
14779
|
"help": "Create a column",
|
|
14780
|
-
"description":
|
|
14781
|
-
"notes":
|
|
14780
|
+
"description": "Create a column from a ColumnCreate payload.\nFor llm_enrichment, there are two valid authoring paths:\n- generated path: send config.instructions and let the API compile config.advancedPrompt\n- manual path: send config.advancedPrompt directly when you want exact prompt control",
|
|
14781
|
+
"notes": "Recommended flow for llm_enrichment:\n\nautotouch columns recipe --type llm_enrichment --output human\n\nThe runnable prompt is always config.advancedPrompt before execution.",
|
|
14782
14782
|
"required_flags": [
|
|
14783
14783
|
"--table-id"
|
|
14784
14784
|
],
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: autotouch-cli
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.61
|
|
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
|
|
@@ -158,6 +158,14 @@ def _mapping_text(value: Any) -> str:
|
|
|
158
158
|
return _text(value)
|
|
159
159
|
|
|
160
160
|
|
|
161
|
+
def _llm_advanced_prompt_text(config: Dict[str, Any]) -> str:
|
|
162
|
+
return (
|
|
163
|
+
_text(config.get("advancedPrompt"))
|
|
164
|
+
or _text(config.get("advanced_prompt"))
|
|
165
|
+
or _text(config.get("prompt"))
|
|
166
|
+
)
|
|
167
|
+
|
|
168
|
+
|
|
161
169
|
def _llm_provider_values() -> Tuple[str, ...]:
|
|
162
170
|
return ("llm", "gemini", "xai", "openai", "anthropic", "groq")
|
|
163
171
|
|
|
@@ -378,13 +386,14 @@ _PROVIDER_CONTRACTS: Tuple[ResearchTableProviderContract, ...] = (
|
|
|
378
386
|
},
|
|
379
387
|
},
|
|
380
388
|
recipe_notes=(
|
|
381
|
-
"
|
|
389
|
+
"The runnable prompt is always config.advancedPrompt before execution.",
|
|
390
|
+
"Generated path: provide instructions and let the API compile config.advancedPrompt for you.",
|
|
391
|
+
"Manual path: write config.advancedPrompt directly when you want exact control over the final prompt.",
|
|
382
392
|
"When the platform generates the runnable prompt from instructions, keep useAutoSchema=true unless you intentionally want to own the schema yourself.",
|
|
383
393
|
"Do not send user_schema/response_schema in that default generated-prompt path; prompt/schema drift is possible if you later change the generated prompt but keep a frozen custom schema.",
|
|
384
394
|
"Basic is for extraction, scoring, or classification using fields already in the row. Agent is for tasks that may need outside lookup or web research.",
|
|
385
395
|
"Create/update always materializes the runnable prompt into config.advancedPrompt before execution.",
|
|
386
396
|
"Generated agent-mode prompts always include company/requester context.",
|
|
387
|
-
"Basic mode stays manual-prompt-first; write the prompt directly from the user goal/preferences.",
|
|
388
397
|
"Runtime only injects values for placeholders the prompt explicitly references.",
|
|
389
398
|
"Manual/basic prompts should use explicit placeholders like {{company_name}}, {{domain}}, or {{user_value_proposition}} when those values are needed.",
|
|
390
399
|
"Agent mode is JSON-oriented.",
|
|
@@ -1357,6 +1366,38 @@ def validate_column_provider_contract(
|
|
|
1357
1366
|
)
|
|
1358
1367
|
return contract
|
|
1359
1368
|
|
|
1369
|
+
if contract.key == "llm":
|
|
1370
|
+
prompt_source = _normalize(cfg.get("promptSource") or cfg.get("prompt_source"))
|
|
1371
|
+
instructions = _text(cfg.get("instructions"))
|
|
1372
|
+
advanced_prompt = _llm_advanced_prompt_text(cfg)
|
|
1373
|
+
|
|
1374
|
+
if prompt_source == "generated":
|
|
1375
|
+
if not instructions:
|
|
1376
|
+
raise ProviderContractValidationError(
|
|
1377
|
+
"missing_required_field",
|
|
1378
|
+
"Generated LLM prompt mode requires config.instructions.",
|
|
1379
|
+
hint="Use instructions for shorthand/high-level intent, or switch to config.promptSource='manual' and write config.advancedPrompt directly.",
|
|
1380
|
+
)
|
|
1381
|
+
return contract
|
|
1382
|
+
|
|
1383
|
+
if prompt_source == "manual":
|
|
1384
|
+
if not advanced_prompt:
|
|
1385
|
+
raise ProviderContractValidationError(
|
|
1386
|
+
"missing_required_field",
|
|
1387
|
+
"Manual LLM prompt mode requires config.advancedPrompt.",
|
|
1388
|
+
hint="Write config.advancedPrompt directly, or remove config.promptSource and supply config.instructions for the generated path.",
|
|
1389
|
+
)
|
|
1390
|
+
return contract
|
|
1391
|
+
|
|
1392
|
+
if instructions or advanced_prompt:
|
|
1393
|
+
return contract
|
|
1394
|
+
|
|
1395
|
+
raise ProviderContractValidationError(
|
|
1396
|
+
"missing_required_field",
|
|
1397
|
+
"LLM enrichment columns require either config.instructions or config.advancedPrompt.",
|
|
1398
|
+
hint="Use instructions for the generated path or write config.advancedPrompt directly for the manual path.",
|
|
1399
|
+
)
|
|
1400
|
+
|
|
1360
1401
|
if contract.key == "add_to_sequence":
|
|
1361
1402
|
if not _text(cfg.get("sequenceId")):
|
|
1362
1403
|
raise ProviderContractValidationError(
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|