ndi-cli 0.26.0__tar.gz → 0.27.0__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ndi-cli
3
- Version: 0.26.0
3
+ Version: 0.27.0
4
4
  Summary: NDI platform CLI: document operations, jobs, workspaces, and the agent workspace tools
5
5
  Keywords: ndi,cli,document-intelligence,coding-agents
6
6
  Author: Nace AI
@@ -58,8 +58,7 @@ config location. Workspace-scoped verbs also take `--workspace ID`.
58
58
  | `ndi files upload\|list\|get\|delete` | Workspace files (a directory walks nested files; `--ingest` then queues ingestion) |
59
59
  | `ndi ingest` | Queue ingestion |
60
60
  | `ndi automatic-search QUERY` | Service answers with fact search or an agent over files, tables and the catalog (`--mode fact\|agent` skips the routing step, `--path` scopes it to files); prints the route, the output job id, and the answer (plus the catalog table when there is one) |
61
- | `ndi deep-search QUERY` / `ndi fact-search QUERY` | Agentic / single-shot search (`--path` on `deep-search` scopes it to files); then `ndi job` on each printed `grounding_job_ids` entry |
62
- | `ndi filtered-search QUERY` | Corpus filter/rank/count over the metadata catalog (`--path` scopes it to files, `--cursor` pages an earlier run) |
61
+ | `ndi filtered-search --cursor CURSOR` | Page a catalog table past its first rows. A new `filtered-search QUERY` is deprecated: use `automatic-search` |
63
62
  | `ndi je-testing QUERY` | Journal-entry testing over a ledger package (`--path` to scope it, `--reasoning-effort` for the thinking budget) |
64
63
  | `ndi ledger-understanding start\|get\|sources\|select\|selection` | Measure the ledger package, confirm sources, or read the latest report |
65
64
  | `ndi ask-file PATH QUESTION` | Cited answer over one document, image or recording |
@@ -34,8 +34,7 @@ config location. Workspace-scoped verbs also take `--workspace ID`.
34
34
  | `ndi files upload\|list\|get\|delete` | Workspace files (a directory walks nested files; `--ingest` then queues ingestion) |
35
35
  | `ndi ingest` | Queue ingestion |
36
36
  | `ndi automatic-search QUERY` | Service answers with fact search or an agent over files, tables and the catalog (`--mode fact\|agent` skips the routing step, `--path` scopes it to files); prints the route, the output job id, and the answer (plus the catalog table when there is one) |
37
- | `ndi deep-search QUERY` / `ndi fact-search QUERY` | Agentic / single-shot search (`--path` on `deep-search` scopes it to files); then `ndi job` on each printed `grounding_job_ids` entry |
38
- | `ndi filtered-search QUERY` | Corpus filter/rank/count over the metadata catalog (`--path` scopes it to files, `--cursor` pages an earlier run) |
37
+ | `ndi filtered-search --cursor CURSOR` | Page a catalog table past its first rows. A new `filtered-search QUERY` is deprecated: use `automatic-search` |
39
38
  | `ndi je-testing QUERY` | Journal-entry testing over a ledger package (`--path` to scope it, `--reasoning-effort` for the thinking budget) |
40
39
  | `ndi ledger-understanding start\|get\|sources\|select\|selection` | Measure the ledger package, confirm sources, or read the latest report |
41
40
  | `ndi ask-file PATH QUESTION` | Cited answer over one document, image or recording |
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "ndi-cli"
3
- version = "0.26.0"
3
+ version = "0.27.0"
4
4
  description = "NDI platform CLI: document operations, jobs, workspaces, and the agent workspace tools"
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "ndi-cli"
3
- version = "0.26.0"
3
+ version = "0.27.0"
4
4
  description = "NDI platform CLI: document operations, jobs, workspaces, and the agent workspace tools"
5
5
  authors = [
6
6
  { name = "Nace AI", email = "engineering@nace.ai" }
@@ -6,4 +6,4 @@ methods. Inside an agent sandbox the workspace tools (``folder-metadata``,
6
6
  are the whole surface; outside one only ``ask-file`` is.
7
7
  """
8
8
 
9
- __version__ = "0.26.0"
9
+ __version__ = "0.27.0"
@@ -117,29 +117,6 @@ def add_parsers(sub: argparse._SubParsersAction, common: argparse.ArgumentParser
117
117
  add_job_output_args(ingest)
118
118
  ingest.set_defaults(run=_run_ingest, family="workspace", needs_workspace=True, needs_client=True)
119
119
 
120
- deep = sub.add_parser("deep-search", parents=[common], help="Run an agentic workspace search.")
121
- deep.add_argument("query")
122
- deep.add_argument("--prefix", default=None, dest="path_prefix")
123
- deep.add_argument(
124
- "--path",
125
- action="append",
126
- dest="paths",
127
- default=None,
128
- help="Add this file to the scope (with --prefix: the folder's files plus these); repeatable.",
129
- )
130
- _add_context_args(deep)
131
- add_job_output_args(deep)
132
- deep.set_defaults(run=_run_deep_search, family="workspace", needs_workspace=True, needs_client=True)
133
-
134
- fact = sub.add_parser("fact-search", parents=[common], help="Run the fixed single-shot search pipeline.")
135
- fact.add_argument("query")
136
- fact.add_argument("--prefix", default=None, dest="path_prefix")
137
- fact.add_argument("--path", action="append", dest="paths", default=None, help="Scope to this file; repeatable.")
138
- fact.add_argument("--top-k", type=int, default=None)
139
- _add_context_args(fact)
140
- add_job_output_args(fact)
141
- fact.set_defaults(run=_run_fact_search, family="workspace", needs_workspace=True, needs_client=True)
142
-
143
120
  # No --effort, --session-id, or --allow-clarification: the route is single-shot.
144
121
  automatic = sub.add_parser(
145
122
  "automatic-search",
@@ -161,7 +138,9 @@ def add_parsers(sub: argparse._SubParsersAction, common: argparse.ArgumentParser
161
138
  automatic.set_defaults(run=_run_automatic_search, family="workspace", needs_workspace=True, needs_client=True)
162
139
 
163
140
  filtered = sub.add_parser(
164
- "filtered-search", parents=[common], help="Run a filter/rank/count query over the metadata catalog."
141
+ "filtered-search",
142
+ parents=[common],
143
+ help="Page a catalog table with --cursor. A new query here is deprecated: use automatic-search.",
165
144
  )
166
145
  filtered.add_argument("query", nargs="?", default=None)
167
146
  filtered.add_argument(
@@ -172,8 +151,7 @@ def add_parsers(sub: argparse._SubParsersAction, common: argparse.ArgumentParser
172
151
  _add_context_args(filtered)
173
152
  # No --result-unit: the server deprecates the grouping override and returns
174
153
  # catalog entries. No --allow-clarification: a clarification is answered by a
175
- # new initial query, and a shell has nowhere to keep the thread — the reason
176
- # deep-search omits --session-id.
154
+ # new initial query, and a shell has nowhere to keep the thread.
177
155
  add_job_output_args(filtered)
178
156
  filtered.set_defaults(run=_run_filtered_search, family="workspace", needs_workspace=True, needs_client=True)
179
157
 
@@ -189,8 +167,7 @@ def add_parsers(sub: argparse._SubParsersAction, common: argparse.ArgumentParser
189
167
  help="Add this file to the scope (with --prefix: the folder's files plus these); repeatable.",
190
168
  )
191
169
  _add_context_args(jet)
192
- # No --session-id, for the reason deep-search omits it: a shell has nowhere
193
- # to keep a thread. Omitting --reasoning-effort uses the service default.
170
+ # No --session-id: a shell has nowhere to keep a thread. Omitting --reasoning-effort uses the service default.
194
171
  add_job_output_args(jet)
195
172
  jet.set_defaults(run=_run_je_testing, family="workspace", needs_workspace=True, needs_client=True)
196
173
 
@@ -537,29 +514,6 @@ def _run_ingest(client: NdiClient, workspace_id: str, args: argparse.Namespace)
537
514
  return _finish_job(client, job, args, _render.ingestion_job, "ingest")
538
515
 
539
516
 
540
- def _run_deep_search(client: NdiClient, workspace_id: str, args: argparse.Namespace) -> int:
541
- job = client.search.deep(
542
- workspace_id,
543
- query=args.query,
544
- context=args.context,
545
- path_prefix=args.path_prefix,
546
- paths=args.paths,
547
- )
548
- return _finish_job(client, job, args, _render.search_job, "deep-search")
549
-
550
-
551
- def _run_fact_search(client: NdiClient, workspace_id: str, args: argparse.Namespace) -> int:
552
- job = client.search.fact(
553
- workspace_id,
554
- query=args.query,
555
- context=args.context,
556
- path_prefix=args.path_prefix,
557
- paths=args.paths,
558
- top_k=args.top_k,
559
- )
560
- return _finish_job(client, job, args, _render.search_job, "fact-search")
561
-
562
-
563
517
  def _run_automatic_search(client: NdiClient, workspace_id: str, args: argparse.Namespace) -> int:
564
518
  job = client.search.automatic(
565
519
  workspace_id,
@@ -592,6 +546,8 @@ def _run_filtered_search(client: NdiClient, workspace_id: str, args: argparse.Na
592
546
  return 2
593
547
  job = client.search.filtered_page(workspace_id, cursor=args.cursor)
594
548
  else:
549
+ # On stderr, where a script's parsed stdout never sees it; the query still runs.
550
+ print("note: filtered-search QUERY is deprecated and will be removed; use automatic-search.", file=sys.stderr)
595
551
  job = client.search.filtered(
596
552
  workspace_id,
597
553
  query=args.query,
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes