autotouch-cli 0.2.12__tar.gz → 0.2.13__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 (62) hide show
  1. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/PKG-INFO +38 -2
  2. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/autotouch_cli.egg-info/PKG-INFO +38 -2
  3. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/docs/research-table/reference/autotouch-cli-pypi.md +37 -1
  4. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/pyproject.toml +1 -1
  5. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/smart_table_cli.py +34 -0
  6. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/autotouch_cli.egg-info/SOURCES.txt +0 -0
  7. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/autotouch_cli.egg-info/dependency_links.txt +0 -0
  8. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/autotouch_cli.egg-info/entry_points.txt +0 -0
  9. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/autotouch_cli.egg-info/requires.txt +0 -0
  10. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/autotouch_cli.egg-info/top_level.txt +0 -0
  11. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/__init__.py +0 -0
  12. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/add_column_unique_index.py +0 -0
  13. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/attach_csv_import_leads_to_research_table.py +0 -0
  14. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/bundle_sequences_backend.py +0 -0
  15. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/check_agent_traces.py +0 -0
  16. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/check_column_mode.py +0 -0
  17. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/exit_terminal_leads_from_sequences.py +0 -0
  18. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/fetch_lead.py +0 -0
  19. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/fix_lead_titles_from_csv.py +0 -0
  20. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/migrations/20250106_add_column_position.py +0 -0
  21. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/migrations/20250108_fix_legacy_column_fields.py +0 -0
  22. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/migrations/20250109_add_user_fields_to_tables.py +0 -0
  23. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/migrations/20250117_add_call_logs_webhook_indexes.py +0 -0
  24. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/migrations/20250117_rename_call_logs_collection.py +0 -0
  25. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/migrations/20250119_create_leads_unique_email_index.py +0 -0
  26. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/migrations/20250123_add_filter_indexes.py +0 -0
  27. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/migrations/20250123_add_llm_responses_collection.py +0 -0
  28. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/migrations/20250128_migrate_user_ids_to_objectid.py +0 -0
  29. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/migrations/20250208_backfill_task_research_values.py +0 -0
  30. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/migrations/20250604_add_origin_indexes.py +0 -0
  31. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/migrations/20250608_cleanup_agent_metadata.py +0 -0
  32. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/migrations/20250608_rename_agent_metadata_to_metadata.py +0 -0
  33. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/migrations/20250922_add_activity_indexes.py +0 -0
  34. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/migrations/20250926_migrate_single_to_arrays.py +0 -0
  35. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/migrations/20250928_add_missing_timestamp_fields.py +0 -0
  36. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/migrations/20250929_add_task_join_indexes.py +0 -0
  37. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/migrations/20250929_add_task_join_indexes_safe.py +0 -0
  38. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/migrations/20250929_create_shared_phone_cache.py +0 -0
  39. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/migrations/20251007_add_rows_position_id_index.py +0 -0
  40. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/migrations/20251109_add_ttl_for_llm_and_preview_traces.py +0 -0
  41. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/migrations/20260113_normalize_table_filter_operators.py +0 -0
  42. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/migrations/20260113_set_user_permissions_user_admin.py +0 -0
  43. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/migrations/20260204_sync_lead_owner_from_tasks.py +0 -0
  44. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/migrations/migrate_org_user_credits.py +0 -0
  45. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/migrations/set_default_lead_status.py +0 -0
  46. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/migrations/update_lead_owner_from_tasks.py +0 -0
  47. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/reassign_sequence_owner.py +0 -0
  48. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/run_sidecar_orchestrator_demo.py +0 -0
  49. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/test_crm_company_policy.py +0 -0
  50. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/test_sequences_instantly_e2e.py +0 -0
  51. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/test_sequences_personal_e2e.py +0 -0
  52. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/test_task_error_logger.py +0 -0
  53. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/scripts/verify_azurite_voicemail.py +0 -0
  54. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/setup.cfg +0 -0
  55. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/tests/test_contactout_custom.py +0 -0
  56. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/tests/test_contactout_integration.py +0 -0
  57. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/tests/test_contactout_multi_titles.py +0 -0
  58. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/tests/test_contactout_pipeline.py +0 -0
  59. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/tests/test_contactout_simple.py +0 -0
  60. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/tests/test_contactout_v2_bulk.py +0 -0
  61. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/tests/test_lead_required_fields.py +0 -0
  62. {autotouch_cli-0.2.12 → autotouch_cli-0.2.13}/tests/test_phone_provider_pipeline.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: autotouch-cli
3
- Version: 0.2.12
3
+ Version: 0.2.13
4
4
  Summary: Autotouch Smart Table CLI
5
5
  Requires-Python: >=3.9
6
6
  Description-Content-Type: text/markdown
@@ -55,6 +55,17 @@ autotouch auth set-key --api-key stk_... --base-url https://app.autotouch.ai
55
55
  autotouch auth check
56
56
  ```
57
57
 
58
+ Developer keys support the same scope model as raw HTTP API calls.
59
+ Workflow-related scopes now include:
60
+ - `sequences:read`
61
+ - `sequences:write`
62
+ - `sequences:run`
63
+ - `tasks:read`
64
+ - `tasks:write`
65
+
66
+ Reference:
67
+ - `docs/platform/authentication.md`
68
+
58
69
  ## Preflight (recommended before writes)
59
70
 
60
71
  ```bash
@@ -158,6 +169,24 @@ This keeps quickstart short while documenting the full strategy:
158
169
  - one-person-per-row output contract,
159
170
  - JSON split + downstream enrichment chaining.
160
171
 
172
+ ## Sequences/Tasks workflow APIs (current CLI coverage)
173
+
174
+ The installable `autotouch` CLI currently provides first-class commands for research-table APIs.
175
+
176
+ Sequence/task workflow endpoints are available today via HTTP with the same developer key:
177
+ - `docs/platform/external-workflows-api.md`
178
+
179
+ Examples include:
180
+ - `POST /api/sequences`
181
+ - `PATCH /api/sequences/{sequence_id}/status`
182
+ - `POST /api/sequences/{sequence_id}/enroll`
183
+ - `POST /api/task-queue/create`
184
+ - `POST /api/task-queue/{task_id}/draft`
185
+
186
+ Important:
187
+ - These workflow routes support `actorUserId` query parameter.
188
+ - External sequence validation rules (manual vs automated vs AI draft constraints) are documented in the workflow reference above.
189
+
161
190
  ## Create basic/manual fields (text, number, date, etc.)
162
191
 
163
192
  Use `kind=manual` for non-enrichment columns.
@@ -302,6 +331,8 @@ autotouch columns run-next \
302
331
  ```bash
303
332
  autotouch jobs get --job-id <JOB_ID> --output json
304
333
  autotouch jobs watch --job-id <JOB_ID> --interval 2 --output json
334
+ # Recover latest job id if local output lost it:
335
+ autotouch jobs list --table-id <TABLE_ID> --column-id <COLUMN_ID> --limit 1 --output json
305
336
  ```
306
337
 
307
338
  Terminal statuses:
@@ -343,7 +374,12 @@ If either failure status appears, treat the run as unconfirmed/inconsistent, ver
343
374
  - Re-run with same `--checkpoint-file` and `--wait`.
344
375
  - CLI can resume/poll an in-flight task from checkpoint state.
345
376
 
346
- 4. Need to stop a running column job:
377
+ 4. Run queued but job id missing from local output:
378
+ - Recover from backend history:
379
+ - `autotouch jobs list --table-id <TABLE_ID> --column-id <COLUMN_ID> --limit 5 --output json`
380
+ - Then poll the returned `job_id` with `autotouch jobs get` / `autotouch jobs watch`.
381
+
382
+ 5. Need to stop a running column job:
347
383
 
348
384
  ```bash
349
385
  autotouch columns stop --table-id <TABLE_ID> --column-id <COLUMN_ID>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: autotouch-cli
3
- Version: 0.2.12
3
+ Version: 0.2.13
4
4
  Summary: Autotouch Smart Table CLI
5
5
  Requires-Python: >=3.9
6
6
  Description-Content-Type: text/markdown
@@ -55,6 +55,17 @@ autotouch auth set-key --api-key stk_... --base-url https://app.autotouch.ai
55
55
  autotouch auth check
56
56
  ```
57
57
 
58
+ Developer keys support the same scope model as raw HTTP API calls.
59
+ Workflow-related scopes now include:
60
+ - `sequences:read`
61
+ - `sequences:write`
62
+ - `sequences:run`
63
+ - `tasks:read`
64
+ - `tasks:write`
65
+
66
+ Reference:
67
+ - `docs/platform/authentication.md`
68
+
58
69
  ## Preflight (recommended before writes)
59
70
 
60
71
  ```bash
@@ -158,6 +169,24 @@ This keeps quickstart short while documenting the full strategy:
158
169
  - one-person-per-row output contract,
159
170
  - JSON split + downstream enrichment chaining.
160
171
 
172
+ ## Sequences/Tasks workflow APIs (current CLI coverage)
173
+
174
+ The installable `autotouch` CLI currently provides first-class commands for research-table APIs.
175
+
176
+ Sequence/task workflow endpoints are available today via HTTP with the same developer key:
177
+ - `docs/platform/external-workflows-api.md`
178
+
179
+ Examples include:
180
+ - `POST /api/sequences`
181
+ - `PATCH /api/sequences/{sequence_id}/status`
182
+ - `POST /api/sequences/{sequence_id}/enroll`
183
+ - `POST /api/task-queue/create`
184
+ - `POST /api/task-queue/{task_id}/draft`
185
+
186
+ Important:
187
+ - These workflow routes support `actorUserId` query parameter.
188
+ - External sequence validation rules (manual vs automated vs AI draft constraints) are documented in the workflow reference above.
189
+
161
190
  ## Create basic/manual fields (text, number, date, etc.)
162
191
 
163
192
  Use `kind=manual` for non-enrichment columns.
@@ -302,6 +331,8 @@ autotouch columns run-next \
302
331
  ```bash
303
332
  autotouch jobs get --job-id <JOB_ID> --output json
304
333
  autotouch jobs watch --job-id <JOB_ID> --interval 2 --output json
334
+ # Recover latest job id if local output lost it:
335
+ autotouch jobs list --table-id <TABLE_ID> --column-id <COLUMN_ID> --limit 1 --output json
305
336
  ```
306
337
 
307
338
  Terminal statuses:
@@ -343,7 +374,12 @@ If either failure status appears, treat the run as unconfirmed/inconsistent, ver
343
374
  - Re-run with same `--checkpoint-file` and `--wait`.
344
375
  - CLI can resume/poll an in-flight task from checkpoint state.
345
376
 
346
- 4. Need to stop a running column job:
377
+ 4. Run queued but job id missing from local output:
378
+ - Recover from backend history:
379
+ - `autotouch jobs list --table-id <TABLE_ID> --column-id <COLUMN_ID> --limit 5 --output json`
380
+ - Then poll the returned `job_id` with `autotouch jobs get` / `autotouch jobs watch`.
381
+
382
+ 5. Need to stop a running column job:
347
383
 
348
384
  ```bash
349
385
  autotouch columns stop --table-id <TABLE_ID> --column-id <COLUMN_ID>
@@ -46,6 +46,17 @@ autotouch auth set-key --api-key stk_... --base-url https://app.autotouch.ai
46
46
  autotouch auth check
47
47
  ```
48
48
 
49
+ Developer keys support the same scope model as raw HTTP API calls.
50
+ Workflow-related scopes now include:
51
+ - `sequences:read`
52
+ - `sequences:write`
53
+ - `sequences:run`
54
+ - `tasks:read`
55
+ - `tasks:write`
56
+
57
+ Reference:
58
+ - `docs/platform/authentication.md`
59
+
49
60
  ## Preflight (recommended before writes)
50
61
 
51
62
  ```bash
@@ -149,6 +160,24 @@ This keeps quickstart short while documenting the full strategy:
149
160
  - one-person-per-row output contract,
150
161
  - JSON split + downstream enrichment chaining.
151
162
 
163
+ ## Sequences/Tasks workflow APIs (current CLI coverage)
164
+
165
+ The installable `autotouch` CLI currently provides first-class commands for research-table APIs.
166
+
167
+ Sequence/task workflow endpoints are available today via HTTP with the same developer key:
168
+ - `docs/platform/external-workflows-api.md`
169
+
170
+ Examples include:
171
+ - `POST /api/sequences`
172
+ - `PATCH /api/sequences/{sequence_id}/status`
173
+ - `POST /api/sequences/{sequence_id}/enroll`
174
+ - `POST /api/task-queue/create`
175
+ - `POST /api/task-queue/{task_id}/draft`
176
+
177
+ Important:
178
+ - These workflow routes support `actorUserId` query parameter.
179
+ - External sequence validation rules (manual vs automated vs AI draft constraints) are documented in the workflow reference above.
180
+
152
181
  ## Create basic/manual fields (text, number, date, etc.)
153
182
 
154
183
  Use `kind=manual` for non-enrichment columns.
@@ -293,6 +322,8 @@ autotouch columns run-next \
293
322
  ```bash
294
323
  autotouch jobs get --job-id <JOB_ID> --output json
295
324
  autotouch jobs watch --job-id <JOB_ID> --interval 2 --output json
325
+ # Recover latest job id if local output lost it:
326
+ autotouch jobs list --table-id <TABLE_ID> --column-id <COLUMN_ID> --limit 1 --output json
296
327
  ```
297
328
 
298
329
  Terminal statuses:
@@ -334,7 +365,12 @@ If either failure status appears, treat the run as unconfirmed/inconsistent, ver
334
365
  - Re-run with same `--checkpoint-file` and `--wait`.
335
366
  - CLI can resume/poll an in-flight task from checkpoint state.
336
367
 
337
- 4. Need to stop a running column job:
368
+ 4. Run queued but job id missing from local output:
369
+ - Recover from backend history:
370
+ - `autotouch jobs list --table-id <TABLE_ID> --column-id <COLUMN_ID> --limit 5 --output json`
371
+ - Then poll the returned `job_id` with `autotouch jobs get` / `autotouch jobs watch`.
372
+
373
+ 5. Need to stop a running column job:
338
374
 
339
375
  ```bash
340
376
  autotouch columns stop --table-id <TABLE_ID> --column-id <COLUMN_ID>
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "autotouch-cli"
7
- version = "0.2.12"
7
+ version = "0.2.13"
8
8
  description = "Autotouch Smart Table CLI"
9
9
  readme = "docs/research-table/reference/autotouch-cli-pypi.md"
10
10
  requires-python = ">=3.9"
@@ -2589,6 +2589,31 @@ def cmd_jobs_get(args: argparse.Namespace) -> None:
2589
2589
  _print_json(data, compact=args.compact)
2590
2590
 
2591
2591
 
2592
+ def cmd_jobs_list(args: argparse.Namespace) -> None:
2593
+ token = _resolve_token(args.token, required=True)
2594
+ params: Dict[str, Any] = {"limit": int(args.limit or 20)}
2595
+ if args.table_id:
2596
+ params["table_id"] = args.table_id
2597
+ if args.column_id:
2598
+ params["column_id"] = args.column_id
2599
+ if args.status:
2600
+ params["status"] = args.status
2601
+ if args.provider:
2602
+ params["provider"] = args.provider
2603
+
2604
+ data = _request_api(
2605
+ "GET",
2606
+ "/api/bulk-jobs",
2607
+ base_url=args.base_url,
2608
+ token=token,
2609
+ use_x_api_key=args.use_x_api_key,
2610
+ params=params,
2611
+ timeout=args.timeout,
2612
+ verbose=args.verbose,
2613
+ )
2614
+ _print_json(data, compact=args.compact)
2615
+
2616
+
2592
2617
  def cmd_jobs_watch(args: argparse.Namespace) -> None:
2593
2618
  token = _resolve_token(args.token, required=True)
2594
2619
  poll_result = _poll_job(
@@ -3039,6 +3064,15 @@ def build_parser() -> argparse.ArgumentParser:
3039
3064
  _add_api_common_arguments(pjg)
3040
3065
  pjg.set_defaults(func=cmd_jobs_get)
3041
3066
 
3067
+ pjl = jobs_sub.add_parser("list", help="List recent bulk jobs (recover latest job_id)")
3068
+ pjl.add_argument("--table-id", help="Filter by table id")
3069
+ pjl.add_argument("--column-id", help="Filter by column id")
3070
+ pjl.add_argument("--status", help="Filter by status (or comma-separated statuses)")
3071
+ pjl.add_argument("--provider", help="Filter by provider")
3072
+ pjl.add_argument("--limit", type=int, default=20, help="Max jobs to return (1-100)")
3073
+ _add_api_common_arguments(pjl)
3074
+ pjl.set_defaults(func=cmd_jobs_list)
3075
+
3042
3076
  pjw = jobs_sub.add_parser("watch", help="Poll bulk job status until terminal (or once)")
3043
3077
  pjw.add_argument("--job-id", required=True)
3044
3078
  pjw.add_argument("--once", action="store_true", help="Fetch once and exit")
File without changes