nooa-cli 0.0.8__tar.gz → 0.0.10__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 (52) hide show
  1. {nooa_cli-0.0.8 → nooa_cli-0.0.10}/.gitignore +2 -3
  2. {nooa_cli-0.0.8 → nooa_cli-0.0.10}/PKG-INFO +23 -5
  3. nooa_cli-0.0.10/README.md +43 -0
  4. {nooa_cli-0.0.8 → nooa_cli-0.0.10}/src/nooa_cli/AGENTS.md +29 -0
  5. {nooa_cli-0.0.8 → nooa_cli-0.0.10}/src/nooa_cli/__init__.py +10 -3
  6. nooa_cli-0.0.10/src/nooa_cli/coding/__init__.py +32 -0
  7. nooa_cli-0.0.10/src/nooa_cli/coding/activity.py +531 -0
  8. nooa_cli-0.0.10/src/nooa_cli/coding/agent.py +193 -0
  9. nooa_cli-0.0.10/src/nooa_cli/coding/instructions.py +80 -0
  10. nooa_cli-0.0.10/src/nooa_cli/coding/settings.py +140 -0
  11. nooa_cli-0.0.10/src/nooa_cli/coding/slash_commands.py +124 -0
  12. nooa_cli-0.0.10/src/nooa_cli/commands/__init__.py +208 -0
  13. nooa_cli-0.0.10/src/nooa_cli/commands/_otlp_helpers.py +387 -0
  14. {nooa_cli-0.0.8 → nooa_cli-0.0.10}/src/nooa_cli/commands/delete_traces.py +11 -6
  15. {nooa_cli-0.0.8 → nooa_cli-0.0.10}/src/nooa_cli/commands/import_harbor.py +22 -5
  16. nooa_cli-0.0.10/src/nooa_cli/commands/import_traces.py +406 -0
  17. {nooa_cli-0.0.8 → nooa_cli-0.0.10}/src/nooa_cli/commands/start_dev.py +23 -0
  18. nooa_cli-0.0.10/src/nooa_cli/sessions/__init__.py +31 -0
  19. nooa_cli-0.0.10/src/nooa_cli/sessions/events.py +43 -0
  20. nooa_cli-0.0.10/src/nooa_cli/sessions/store.py +436 -0
  21. {nooa_cli-0.0.8 → nooa_cli-0.0.10}/src/nooa_cli/tools/_tree_sitter_backend.py +21 -10
  22. {nooa_cli-0.0.8 → nooa_cli-0.0.10}/src/nooa_cli/tools/repo_tools.py +13 -2
  23. {nooa_cli-0.0.8 → nooa_cli-0.0.10}/tests/test_cli_smoke.py +18 -0
  24. nooa_cli-0.0.10/tests/test_coding_activity.py +390 -0
  25. nooa_cli-0.0.10/tests/test_coding_agent.py +218 -0
  26. nooa_cli-0.0.10/tests/test_coding_settings.py +229 -0
  27. nooa_cli-0.0.10/tests/test_coding_slash_commands.py +177 -0
  28. nooa_cli-0.0.10/tests/test_command_plugins.py +238 -0
  29. nooa_cli-0.0.10/tests/test_import_traces.py +576 -0
  30. nooa_cli-0.0.10/tests/test_sessions.py +270 -0
  31. nooa_cli-0.0.10/tests/test_tree_sitter_backend.py +85 -0
  32. nooa_cli-0.0.8/README.md +0 -25
  33. nooa_cli-0.0.8/src/nooa_cli/commands/__init__.py +0 -106
  34. nooa_cli-0.0.8/src/nooa_cli/commands/_otlp_helpers.py +0 -122
  35. nooa_cli-0.0.8/src/nooa_cli/commands/import_traces.py +0 -189
  36. nooa_cli-0.0.8/tests/__init__.py +0 -0
  37. {nooa_cli-0.0.8 → nooa_cli-0.0.10}/docs/activity-introspection-design.md +0 -0
  38. {nooa_cli-0.0.8 → nooa_cli-0.0.10}/pyproject.toml +0 -0
  39. {nooa_cli-0.0.8 → nooa_cli-0.0.10}/src/nooa_cli/__main__.py +0 -0
  40. {nooa_cli-0.0.8 → nooa_cli-0.0.10}/src/nooa_cli/_common.py +0 -0
  41. {nooa_cli-0.0.8 → nooa_cli-0.0.10}/src/nooa_cli/commands/_template.py +0 -0
  42. {nooa_cli-0.0.8 → nooa_cli-0.0.10}/src/nooa_cli/commands/config.py +0 -0
  43. {nooa_cli-0.0.8 → nooa_cli-0.0.10}/src/nooa_cli/commands/eval.py +0 -0
  44. {nooa_cli-0.0.8 → nooa_cli-0.0.10}/src/nooa_cli/commands/traces.py +0 -0
  45. {nooa_cli-0.0.8 → nooa_cli-0.0.10}/src/nooa_cli/completion.py +0 -0
  46. {nooa_cli-0.0.8 → nooa_cli-0.0.10}/src/nooa_cli/tools/__init__.py +0 -0
  47. {nooa_cli-0.0.8 → nooa_cli-0.0.10}/src/nooa_cli/tools/pyp/__init__.py +0 -0
  48. {nooa_cli-0.0.8 → nooa_cli-0.0.10}/src/nooa_cli/tools/pyp/errors.py +0 -0
  49. {nooa_cli-0.0.8 → nooa_cli-0.0.10}/src/nooa_cli/tools/pyp/sources.py +0 -0
  50. {nooa_cli-0.0.8 → nooa_cli-0.0.10}/src/nooa_cli/tools/pyp/stream.py +0 -0
  51. {nooa_cli-0.0.8 → nooa_cli-0.0.10}/src/nooa_cli/tools/pyp/tests/__init__.py +0 -0
  52. {nooa_cli-0.0.8 → nooa_cli-0.0.10}/src/nooa_cli/tools/pyp/tests/test_pyp.py +0 -0
@@ -1,4 +1,4 @@
1
- # Rust toolchain (installed for nemo_flow PyO3 build)
1
+ # Rust toolchain (installed for nemo_relay PyO3 build)
2
2
  .cargo/
3
3
  .rustup/
4
4
 
@@ -296,7 +296,7 @@ agents/**/traces/
296
296
  .config/
297
297
  .local/
298
298
 
299
- # Rust toolchain (installed by rustup for nemo-flow build)
299
+ # Rust toolchain (installed by rustup for nemo-relay build)
300
300
  .cargo/
301
301
  .rustup/
302
302
 
@@ -366,7 +366,6 @@ sft_data/**/*.jsonl
366
366
 
367
367
  # Git credentials (must not be committed)
368
368
  .git-credentials
369
- -e
370
369
  # Bridge watchpoint file — per-worktree, never committed
371
370
  .bridge_watch.json
372
371
 
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: nooa-cli
3
- Version: 0.0.8
3
+ Version: 0.0.10
4
4
  Summary: CLI for nemo-oo-agents (`nooa` command: eval runner, trace viewer, config)
5
5
  Project-URL: Homepage, https://github.com/NVIDIA-NeMo/labs-OO-Agents
6
6
  Project-URL: Repository, https://github.com/NVIDIA-NeMo/labs-OO-Agents
@@ -44,9 +44,27 @@ uv add "nooa-cli[datascience]"
44
44
 
45
45
  ```bash
46
46
  nooa --help
47
- nooa start-dev # launch the trace viewer
48
- nooa eval ... # eval pipeline runner
49
- nooa traces ... # inspect/manage trace files
47
+ nooa start-dev # launch the trace viewer
48
+ nooa eval ... # eval pipeline runner
49
+ nooa traces ... # inspect/manage trace files
50
+ ```
51
+
52
+ Install the separate `nooa-acp` package to add the `nooa acp` plugin command and
53
+ run the NOOA coding agent from an ACP-compatible client:
54
+
55
+ ```bash
56
+ uv add nooa-acp
57
+ export NOOA_MODEL=nvidia_nim/nvidia/nemotron-3-super-120b-a12b
58
+ export NVIDIA_API_KEY=nvapi-...
59
+ uv run nooa-acp
50
60
  ```
51
61
 
52
62
  See the main repo [README](https://github.com/NVIDIA-NeMo/labs-OO-Agents/blob/main/README.md) for the framework documentation.
63
+
64
+ ## Interactive coding sessions
65
+
66
+ `nooa_cli.sessions` owns durable coding-agent session identity, metadata, and
67
+ conversation replay shared by CLI hosts such as the native TUI and ACP. The
68
+ process running an agent owns the writable session handle; other hosts attach
69
+ through their transport or use read-only discovery. Generic event and SQLite
70
+ storage primitives remain in the core `nooa` package.
@@ -0,0 +1,43 @@
1
+ # nooa-cli
2
+
3
+ CLI for [nemo-oo-agents](https://github.com/NVIDIA-NeMo/labs-OO-Agents). Ships the `nooa` command with subcommands for running evaluations, browsing traces, and managing config.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ uv add nooa-cli
9
+
10
+ # ...with numpy/pandas/plotly/scipy/sklearn pre-loaded into the LLM REPL
11
+ uv add "nooa-cli[datascience]"
12
+ ```
13
+
14
+ `nooa-cli` automatically pulls in matching `nemo-oo-agents` (the core framework). The `[datascience]` extra adds libraries the LLM can use in REPL-generated code.
15
+
16
+ ## Usage
17
+
18
+ ```bash
19
+ nooa --help
20
+ nooa start-dev # launch the trace viewer
21
+ nooa eval ... # eval pipeline runner
22
+ nooa traces ... # inspect/manage trace files
23
+ ```
24
+
25
+ Install the separate `nooa-acp` package to add the `nooa acp` plugin command and
26
+ run the NOOA coding agent from an ACP-compatible client:
27
+
28
+ ```bash
29
+ uv add nooa-acp
30
+ export NOOA_MODEL=nvidia_nim/nvidia/nemotron-3-super-120b-a12b
31
+ export NVIDIA_API_KEY=nvapi-...
32
+ uv run nooa-acp
33
+ ```
34
+
35
+ See the main repo [README](https://github.com/NVIDIA-NeMo/labs-OO-Agents/blob/main/README.md) for the framework documentation.
36
+
37
+ ## Interactive coding sessions
38
+
39
+ `nooa_cli.sessions` owns durable coding-agent session identity, metadata, and
40
+ conversation replay shared by CLI hosts such as the native TUI and ACP. The
41
+ process running an agent owns the writable session handle; other hosts attach
42
+ through their transport or use read-only discovery. Generic event and SQLite
43
+ storage primitives remain in the core `nooa` package.
@@ -101,6 +101,35 @@ def command(args: tuple[str, ...]):
101
101
  subprocess.run([sys.executable, "-m", "some_other_tool", *args])
102
102
  ```
103
103
 
104
+ ## Commands From Another Package
105
+
106
+ If your command lives in a *different* installed package (not in this repo),
107
+ register it in the `nooa_cli.commands` entry-point group instead of dropping a
108
+ file here. The entry-point name becomes the subcommand name:
109
+
110
+ ```toml
111
+ # pyproject.toml of your package
112
+ [project.entry-points."nooa_cli.commands"]
113
+ tui = "my_package.cli.tui:command"
114
+ term = "my_package.cli.term:command"
115
+ ```
116
+
117
+ `my_package.cli.tui:command` must be a `click.Command` or `click.Group` — the
118
+ same contract as an in-repo command module.
119
+
120
+ - **Built-ins win name collisions.** A plugin can't shadow `eval`, `config`,
121
+ or anything else shipped here; it's logged and skipped.
122
+ - **A broken plugin is skipped, not fatal.** An entry point that fails to
123
+ import, or that resolves to a non-`click.Command`, logs a warning and is
124
+ left out. `nooa` keeps working.
125
+ - Plugins register in entry-point-name order, so `nooa --help` is stable
126
+ regardless of install order.
127
+ - The **Performance Rule** below applies with extra force: every registered
128
+ entry point is loaded on *every* `nooa` invocation, including `nooa --help`.
129
+ Keep heavy imports inside the handler.
130
+
131
+ This mirrors the existing `nooa.skills` and `nooa.bundled_configs` groups.
132
+
104
133
  ## Shared Utilities
105
134
 
106
135
  Common helpers live in `src/nooa_cli/_common.py`:
@@ -9,7 +9,10 @@ Usage:
9
9
  nooa completion install # Set up shell completions
10
10
 
11
11
  Adding new commands:
12
- Drop a .py file in nooa_cli/commands/ — see commands/_template.py
12
+ In this package: drop a .py file in nooa_cli/commands/ — see
13
+ commands/_template.py
14
+ From another package: register an entry point in the
15
+ "nooa_cli.commands" group — see nooa_cli/commands/__init__.py
13
16
 
14
17
  Shell completion:
15
18
  eval "$(_NOOA_COMPLETE=bash_source nooa)" # bash
@@ -36,7 +39,8 @@ def oo(ctx):
36
39
  """OO Agents — agent toolkit.
37
40
 
38
41
  Extensible CLI for running agents, evaluations, and trace management.
39
- Add new commands by dropping a .py file in nooa_cli/commands/.
42
+ Add new commands by dropping a .py file in nooa_cli/commands/, or from
43
+ another package via the "nooa_cli.commands" entry-point group.
40
44
  """
41
45
  if ctx.invoked_subcommand in _SKIP_SECRETS_PRELOAD:
42
46
  return
@@ -57,11 +61,14 @@ def oo(ctx):
57
61
  )
58
62
 
59
63
 
60
- # -- Auto-discover and register all commands from commands/ -----------------
64
+ # -- Auto-discover and register all commands (built-ins + entry-point plugins) --
61
65
  for _name, _cmd in discover_commands():
62
66
  oo.add_command(_cmd, name=_name)
63
67
 
64
68
  # -- Built-in infrastructure commands (not in commands/ because they're meta) -
69
+ # Registered *after* discovery on purpose: `completion` is not part of
70
+ # discover_commands(), so this ordering is what stops a third-party plugin
71
+ # named "completion" from taking the name.
65
72
  oo.add_command(completion)
66
73
 
67
74
 
@@ -0,0 +1,32 @@
1
+ # SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+ """Shared coding-agent components used by terminal and protocol hosts."""
4
+
5
+ from nooa_cli.coding.activity import (
6
+ ActivityShellTools,
7
+ FileEdit,
8
+ TerminalCommandFinished,
9
+ TerminalCommandOutput,
10
+ TerminalCommandStarted,
11
+ )
12
+ from nooa_cli.coding.agent import CodingAgent
13
+ from nooa_cli.coding.instructions import (
14
+ discover_agent_instruction_files,
15
+ render_agent_instructions,
16
+ )
17
+ from nooa_cli.coding.settings import load_coding_skills_dirs
18
+ from nooa_cli.coding.slash_commands import CodingSlashCommand, CodingSlashCommandRegistry
19
+
20
+ __all__ = [
21
+ "ActivityShellTools",
22
+ "CodingAgent",
23
+ "CodingSlashCommand",
24
+ "CodingSlashCommandRegistry",
25
+ "FileEdit",
26
+ "TerminalCommandFinished",
27
+ "TerminalCommandOutput",
28
+ "TerminalCommandStarted",
29
+ "discover_agent_instruction_files",
30
+ "load_coding_skills_dirs",
31
+ "render_agent_instructions",
32
+ ]