ndi-cli 0.28.0__tar.gz → 0.28.1__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.28.0
3
+ Version: 0.28.1
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
@@ -98,7 +98,7 @@ to **stderr**. `-o auto|md|json|payload|id` picks the shape. `--json` is an
98
98
  alias for `-o json`.
99
99
 
100
100
  The default (`auto`) prints the full JSON response. When that is over
101
- `$NDI_OUTPUT_LIMIT` characters (default 40,000), the compact text rendering
101
+ `$NDI_OUTPUT_LIMIT` characters (default 400,000), the compact text rendering
102
102
  prints instead and stderr carries `note: output shortened …` with the full
103
103
  size. `--json` always prints it whole, and `--save` / `--out-dir` always write
104
104
  it whole. Commands whose output is the content itself (`ws context`, parse
@@ -74,7 +74,7 @@ to **stderr**. `-o auto|md|json|payload|id` picks the shape. `--json` is an
74
74
  alias for `-o json`.
75
75
 
76
76
  The default (`auto`) prints the full JSON response. When that is over
77
- `$NDI_OUTPUT_LIMIT` characters (default 40,000), the compact text rendering
77
+ `$NDI_OUTPUT_LIMIT` characters (default 400,000), the compact text rendering
78
78
  prints instead and stderr carries `note: output shortened …` with the full
79
79
  size. `--json` always prints it whole, and `--save` / `--out-dir` always write
80
80
  it whole. Commands whose output is the content itself (`ws context`, parse
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "ndi-cli"
3
- version = "0.28.0"
3
+ version = "0.28.1"
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.28.0"
3
+ version = "0.28.1"
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.28.0"
9
+ __version__ = "0.28.1"
@@ -15,7 +15,7 @@ OUTPUT_CHOICES = ("auto", "md", "json", "payload", "id")
15
15
  #: Default output is the full JSON response while it stays within this many
16
16
  #: characters on stdout. Past it the compact text rendering stands in, so one
17
17
  #: command cannot flood a reading agent's context; a stderr note says so.
18
- FULL_OUTPUT_LIMIT = 40_000
18
+ FULL_OUTPUT_LIMIT = 400_000
19
19
  OUTPUT_LIMIT_ENV = "NDI_OUTPUT_LIMIT"
20
20
 
21
21
 
@@ -324,6 +324,8 @@ def file_metadata(response: FileMetadataToolResponse) -> str:
324
324
  lines.append(f"summary: {response.summary}")
325
325
  if response.components:
326
326
  lines.append(f"components ({len(response.components)}):")
327
+ # A document's long-table sections share one rows table: its schema and preamble print once.
328
+ shown_tables: set[str] = set()
327
329
  for comp in response.components:
328
330
  if comp.kind == "media":
329
331
  seconds = comp.duration_ms / 1000
@@ -353,8 +355,20 @@ def file_metadata(response: FileMetadataToolResponse) -> str:
353
355
  lines.append(f" [{comp.kind}] {name} — {tail}")
354
356
  if comp.summary:
355
357
  lines.append(f" {comp.summary}")
356
- if comp.columns:
358
+ shared = comp.kind == "section" and comp.columns and any(col.name == "origin" for col in comp.columns)
359
+ shown = comp.table_name in shown_tables
360
+ if shared and not shown:
361
+ lines.append(
362
+ f" {comp.table_name}: one SQL table for every section that lists it; "
363
+ "a section's rows are the ones printed on its pages"
364
+ )
365
+ if comp.columns and not (shared and shown):
357
366
  lines.extend(_column_lines(comp.columns, bool(comp.columns_truncated)))
367
+ if comp.table_preamble and not shown:
368
+ lines.append(" printed above its first table:")
369
+ lines.extend(f" {text}" for text in comp.table_preamble.splitlines())
370
+ if comp.table_name:
371
+ shown_tables.add(comp.table_name)
358
372
  if comp.error:
359
373
  lines.append(f" error: {comp.error}")
360
374
  return "\n".join(lines)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes