tensor-cli 0.2.0__tar.gz → 0.2.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.
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/CHANGELOG.md +10 -0
- tensor_cli-0.2.1/CLAUDE.md +160 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/PKG-INFO +1 -1
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/pyproject.toml +2 -2
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/uv.lock +31 -31
- tensor_cli-0.2.0/CLAUDE.md +0 -28
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/agent-config/SKILL.md +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/agent-config/data/backend-fingerprints.yaml +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/agent-config/scripts/show.sh +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/ask-colleague/SKILL.md +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/ask-colleague/prompts/explore.md +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/ask-colleague/prompts/review.md +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/ask-colleague/prompts/write.md +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/ask-colleague/scripts/ask-colleague.sh +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/assign-to-workforce/SKILL.md +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/assign-to-workforce/scripts/assign-to-workforce.sh +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/cicd/SKILL.md +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/cicd/scripts/_resolve-nick.sh +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/cicd/scripts/portability-lint.sh +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/cicd/scripts/pr-reply.sh +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/cicd/scripts/pr-status.sh +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/cicd/scripts/workflow.sh +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/communicate/SKILL.md +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/communicate/scripts/fetch-issues.sh +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/communicate/scripts/mesh-message.sh +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/communicate/scripts/post-comment.sh +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/communicate/scripts/post-issue.sh +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/communicate/scripts/templates/skill-new-brief.md +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/communicate/scripts/templates/skill-update-brief.md +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/doc-test-alignment/SKILL.md +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/doc-test-alignment/scripts/check.sh +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/pypi-maintainer/SKILL.md +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/pypi-maintainer/scripts/switch-source.sh +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/run-tests/SKILL.md +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/run-tests/scripts/test.sh +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/sonarclaude/SKILL.md +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/sonarclaude/scripts/sonar.sh +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/spec-to-plan/SKILL.md +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/spec-to-plan/scripts/spec-to-plan.sh +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/think/SKILL.md +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/think/scripts/think.sh +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/version-bump/SKILL.md +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/version-bump/scripts/bump.py +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills.local.yaml.example +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.flake8 +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.github/workflows/publish.yml +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.github/workflows/tests.yml +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.gitignore +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.markdownlint-cli2.yaml +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/LICENSE +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/README.md +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/culture.yaml +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/docs/skill-sources.md +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/sonar-project.properties +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/tensor/__init__.py +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/tensor/__main__.py +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/tensor/cli/__init__.py +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/tensor/cli/_commands/__init__.py +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/tensor/cli/_commands/cli.py +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/tensor/cli/_commands/doctor.py +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/tensor/cli/_commands/explain.py +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/tensor/cli/_commands/learn.py +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/tensor/cli/_commands/overview.py +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/tensor/cli/_commands/whoami.py +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/tensor/cli/_errors.py +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/tensor/cli/_output.py +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/tensor/explain/__init__.py +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/tensor/explain/catalog.py +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/tests/__init__.py +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/tests/test_cli.py +0 -0
- {tensor_cli-0.2.0 → tensor_cli-0.2.1}/tests/test_cli_introspection.py +0 -0
|
@@ -5,6 +5,16 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
Format follows [Keep a Changelog](https://keepachangelog.com/). This project
|
|
6
6
|
adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.2.1] - 2026-06-13
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- **Console script renamed `tensor` → `tensor-cli`** in `[project.scripts]`. The scaffold bound the executable to `tensor` while the `prog` name, `--help`, explain catalog, tests, and README all used `tensor-cli` — so the installed command didn't match the docs, and the agent-first rubric gate (`teken cli doctor`, which derives the tool name from the first `[project.scripts]` entry) failed `explain_self` (`tensor explain tensor` had no catalog entry). The command is now `tensor-cli` everywhere.
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
|
|
16
|
+
- **`/init`: expanded `CLAUDE.md` from the bootstrap seed into a full runtime guide.** Documents that the repo is still the `culture-agent-template` scaffold (no tensor-domain logic yet), the CLI dispatch/`register()` architecture, the `CliError` / stdout-stderr / `--json` contracts, the explain catalog, and the load-bearing agent-first rubric (`teken cli doctor . --strict`). Captures the console-script gotcha (the executable is `tensor`, not `tensor-cli`), the version-bump-every-PR + SonarCloud conventions, the cite-don't-import skill-kit rule, and the clone/rename procedure.
|
|
17
|
+
|
|
8
18
|
## [0.2.0] - 2026-06-06
|
|
9
19
|
|
|
10
20
|
### Added
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
4
|
+
|
|
5
|
+
## What this repo actually is
|
|
6
|
+
|
|
7
|
+
`tensor-cli` is a **clonable AgentCulture mesh-agent template**, scaffolded from
|
|
8
|
+
`culture-agent-template`. Despite the description "Agent/CLI for tensor
|
|
9
|
+
operations and ML tensor manipulation," **no tensor logic exists yet** — the
|
|
10
|
+
codebase is the template baseline: an agent-first CLI (the introspection verbs
|
|
11
|
+
below), a mesh identity, the vendored skill kit, and CI/deploy wiring. The
|
|
12
|
+
tensor domain is the *intended* build, not the current state. Treat domain work
|
|
13
|
+
as greenfield; add it as new noun groups (see "Adding a verb or noun" below).
|
|
14
|
+
|
|
15
|
+
The runtime package (`tensor/`) has **zero third-party dependencies** — keep it
|
|
16
|
+
that way. The CLI is cited (cite-don't-import) from the `teken` `python-cli`
|
|
17
|
+
reference; new code should follow the same patterns rather than pull deps.
|
|
18
|
+
|
|
19
|
+
## Commands
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
uv sync # create .venv + install (incl. dev group)
|
|
23
|
+
uv run pytest -n auto # full suite (xdist parallel)
|
|
24
|
+
uv run pytest tests/test_cli.py::test_whoami_json # a single test
|
|
25
|
+
uv run pytest -n auto --cov=tensor --cov-report=term # with coverage (CI gate: 60%)
|
|
26
|
+
uv run teken cli doctor . --strict # the agent-first rubric gate CI enforces
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Lint (all must pass — CI runs each):
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
uv run black --check tensor tests
|
|
33
|
+
uv run isort --check-only tensor tests
|
|
34
|
+
uv run flake8 tensor tests
|
|
35
|
+
uv run bandit -c pyproject.toml -r tensor
|
|
36
|
+
markdownlint-cli2 "**/*.md" "#node_modules" "#.local" "#.claude/skills" "#.teken"
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
`markdownlint-cli2` is a Node tool, not part of the uv dev group — install it
|
|
40
|
+
separately (CI pins `npm install -g markdownlint-cli2@0.21.0`). The other four
|
|
41
|
+
come from `uv sync`.
|
|
42
|
+
|
|
43
|
+
### Running the CLI
|
|
44
|
+
|
|
45
|
+
The console command, the distribution name, the argparse `prog`, the explain
|
|
46
|
+
catalog keys, and `[project.scripts]` all agree on **`tensor-cli`**:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
uv run tensor-cli whoami # installed console script
|
|
50
|
+
uv run python -m tensor whoami # equivalent (module entry point)
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Note the import package is still `tensor/` (so `python -m tensor`), while the
|
|
54
|
+
*command* is `tensor-cli`. The agent-first rubric (`teken cli doctor`) derives
|
|
55
|
+
the tool name from the first `[project.scripts]` entry and runs
|
|
56
|
+
`<name> explain <name>` against the catalog — so that script name **must** match
|
|
57
|
+
a catalog key in `tensor/explain/catalog.py`. If you rename the command, rename
|
|
58
|
+
the catalog key (and `prog`) in the same change or the rubric gate fails.
|
|
59
|
+
|
|
60
|
+
## Architecture
|
|
61
|
+
|
|
62
|
+
A single argparse tree with a uniform plugin-style registration contract.
|
|
63
|
+
|
|
64
|
+
- **`tensor/cli/__init__.py`** — `main()` → `_build_parser()` → `_dispatch()`.
|
|
65
|
+
Each command module exposes a `register(sub)` that adds its subparser and sets
|
|
66
|
+
`func`. To add a command you import it in `_build_parser()` and call
|
|
67
|
+
`register(sub)` — nothing else is wired.
|
|
68
|
+
- **Error contract (`tensor/cli/_errors.py`)** — every failure raises
|
|
69
|
+
`CliError(code, message, remediation)`. `_dispatch()` catches it (and wraps any
|
|
70
|
+
stray exception) so **no Python traceback ever reaches stderr**. Argparse
|
|
71
|
+
errors are also routed through this: `_CliArgumentParser.error()` overrides the
|
|
72
|
+
default `prog: error:` / exit-2 behaviour and emits the structured form with
|
|
73
|
+
exit 1. Subparsers inherit it via `parser_class=_CliArgumentParser`.
|
|
74
|
+
- **Output contract (`tensor/cli/_output.py`)** — **results to stdout,
|
|
75
|
+
errors/diagnostics to stderr, never mixed.** Text errors render as
|
|
76
|
+
`error: …\nhint: …` (the `hint:` prefix is required by the agent-first rubric).
|
|
77
|
+
`--json` routes structured payloads to the same streams. Every verb takes
|
|
78
|
+
`--json`; honour both modes in any new command.
|
|
79
|
+
- **Exit codes** — `0` success, `1` user error, `2` environment error, `3+`
|
|
80
|
+
reserved. Centralised in `_errors.py`; don't invent ad-hoc codes.
|
|
81
|
+
- **`--json` parse-time peek** — JSON-mode errors can fire *before* `args.json`
|
|
82
|
+
exists (argparse failures). `main()` pre-scans raw argv and sets
|
|
83
|
+
`_CliArgumentParser._json_hint` so even parse errors honour `--json`. Preserve
|
|
84
|
+
this if you touch arg parsing.
|
|
85
|
+
- **Explain catalog (`tensor/explain/`)** — `tensor/explain/catalog.py` is a
|
|
86
|
+
`dict[tuple[str,...], str]` of verbatim markdown keyed by command path;
|
|
87
|
+
`resolve()` looks it up or raises `CliError`. Every noun/verb you add should
|
|
88
|
+
get a matching catalog entry. Note the coverage gap:
|
|
89
|
+
`test_every_catalog_path_resolves` only asserts that the *existing* catalog
|
|
90
|
+
keys resolve — it does **not** verify that every registered command has an
|
|
91
|
+
entry, so a command added without one won't fail that test. Only the rubric's
|
|
92
|
+
`explain_self` (the root command) is enforced in CI; entries for other verbs
|
|
93
|
+
are a convention you must uphold by hand.
|
|
94
|
+
|
|
95
|
+
### The agent-first rubric (load-bearing)
|
|
96
|
+
|
|
97
|
+
CI gates on `teken cli doctor . --strict`. This is why the introspection verbs
|
|
98
|
+
exist and have specific shapes — don't delete them casually:
|
|
99
|
+
|
|
100
|
+
- `learn` must be ≥200 chars and mention purpose, command map, exit codes,
|
|
101
|
+
`--json`, and `explain`.
|
|
102
|
+
- Any noun with action-verbs must also expose `overview` (this is the entire
|
|
103
|
+
reason the `cli` noun + `cli overview` exist today).
|
|
104
|
+
- Descriptive verbs (`overview`) must **never hard-fail on a bad target** —
|
|
105
|
+
`overview` accepts and ignores a stray positional path so it always exits 0.
|
|
106
|
+
- `doctor` returns the rubric shape `{healthy, checks:[{id,passed,severity,
|
|
107
|
+
message,remediation}]}` and mirrors the invariants `steward doctor` checks
|
|
108
|
+
(prompt-file-present, backend-consistency) plus a skills-present check.
|
|
109
|
+
|
|
110
|
+
### Adding a verb or noun
|
|
111
|
+
|
|
112
|
+
1. Create `tensor/cli/_commands/<name>.py` with `register(sub)` + a
|
|
113
|
+
`cmd_<name>(args)->int` handler. Add `--json`; raise `CliError` on failure;
|
|
114
|
+
emit via `_output` helpers.
|
|
115
|
+
2. Import + `register()` it in `_build_parser()`.
|
|
116
|
+
3. Add a `catalog.py` entry for its path(s).
|
|
117
|
+
4. If it's a *noun* with action-verbs, give it an `overview` sub-verb (reuse
|
|
118
|
+
`overview.py`'s `emit_overview` / section helpers, as `cli.py` does).
|
|
119
|
+
5. Add tests under `tests/` (smoke + `--json` shape).
|
|
120
|
+
|
|
121
|
+
## Identity & the skill kit
|
|
122
|
+
|
|
123
|
+
- **`culture.yaml`** declares the mesh agent (`suffix: tensor-cli`,
|
|
124
|
+
`backend: claude`). `whoami`/`doctor` parse it *without* a YAML dep by walking
|
|
125
|
+
up from `__file__` and reading the first agent block — keep the parser tolerant
|
|
126
|
+
if you touch `whoami.py`. `backend: claude` requires `CLAUDE.md` to exist
|
|
127
|
+
(the backend-consistency invariant).
|
|
128
|
+
- **`.claude/skills/`** is vendored **cite-don't-import** from `guildmaster`
|
|
129
|
+
(provenance + re-sync procedure in `docs/skill-sources.md`). **Do not edit
|
|
130
|
+
vendored script bodies** — only the documented identifier-only adaptations in
|
|
131
|
+
`SKILL.md`. To update a skill, re-vendor per `docs/skill-sources.md`. Some
|
|
132
|
+
skills need external tools on PATH (`devex`, `agtag`, optionally `colleague`).
|
|
133
|
+
|
|
134
|
+
## PR / release conventions
|
|
135
|
+
|
|
136
|
+
- **Every PR bumps the version** — even docs/config/CI. CI (`version-check` job)
|
|
137
|
+
blocks merge if `pyproject.toml` version equals `origin/main`. Use the
|
|
138
|
+
`version-bump` skill (updates `pyproject.toml` + prepends to `CHANGELOG.md`).
|
|
139
|
+
- The `cicd` skill is the PR lane (layered on `devex pr`); `cicd await` polls the
|
|
140
|
+
SonarCloud gate + unresolved threads.
|
|
141
|
+
- **SonarCloud coverage requires `relative_files = true`** (already set in
|
|
142
|
+
`[tool.coverage.run]`) so `coverage.xml` paths match `sonar.sources=tensor`;
|
|
143
|
+
absolute paths silently report 0% coverage.
|
|
144
|
+
- Publishing is automatic via PyPI Trusted Publishing on push to `main`
|
|
145
|
+
(`.github/workflows/publish.yml`); PRs publish a `.devN` build to TestPyPI.
|
|
146
|
+
|
|
147
|
+
## Renaming the template (when cloning to a real agent)
|
|
148
|
+
|
|
149
|
+
The name `tensor-cli` / package `tensor/` is hard-coded in ~100 places. Discover
|
|
150
|
+
every occurrence first:
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
git grep -n 'tensor-cli\|agentculture_tensor-cli\|tensor\b'
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Then rename: the `tensor/` package dir, `pyproject.toml` (`name`,
|
|
157
|
+
`[project.scripts]`, `[tool.hatch...]`, coverage `source`, urls), `tests/`,
|
|
158
|
+
`sonar-project.properties` (`projectKey`), all docstrings/prose, and
|
|
159
|
+
`culture.yaml` (`suffix`, `backend`). Re-run `/init` afterward and re-vendor only
|
|
160
|
+
the skills you need.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tensor-cli
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Summary: Agent/CLI for tensor operations and ML tensor manipulation
|
|
5
5
|
Project-URL: Homepage, https://github.com/agentculture/tensor-cli
|
|
6
6
|
Project-URL: Issues, https://github.com/agentculture/tensor-cli/issues
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "tensor-cli"
|
|
3
|
-
version = "0.2.
|
|
3
|
+
version = "0.2.1"
|
|
4
4
|
description = "Agent/CLI for tensor operations and ML tensor manipulation"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "MIT"
|
|
@@ -20,7 +20,7 @@ Homepage = "https://github.com/agentculture/tensor-cli"
|
|
|
20
20
|
Issues = "https://github.com/agentculture/tensor-cli/issues"
|
|
21
21
|
|
|
22
22
|
[project.scripts]
|
|
23
|
-
tensor = "tensor.cli:main"
|
|
23
|
+
tensor-cli = "tensor.cli:main"
|
|
24
24
|
|
|
25
25
|
[build-system]
|
|
26
26
|
requires = ["hatchling"]
|
|
@@ -154,37 +154,6 @@ wheels = [
|
|
|
154
154
|
{ url = "https://files.pythonhosted.org/packages/61/e8/cb8e80d6f9f55b99588625062822bf946cf03ed06315df4bd8397f5632a1/coverage-7.14.0-py3-none-any.whl", hash = "sha256:8de5b61163aee3d05c8a2beab6f47913df7981dad1baf82c414d99158c286ab1", size = 211764, upload-time = "2026-05-10T18:02:29.538Z" },
|
|
155
155
|
]
|
|
156
156
|
|
|
157
|
-
[[package]]
|
|
158
|
-
name = "tensor-cli"
|
|
159
|
-
version = "0.2.0"
|
|
160
|
-
source = { editable = "." }
|
|
161
|
-
|
|
162
|
-
[package.dev-dependencies]
|
|
163
|
-
dev = [
|
|
164
|
-
{ name = "bandit" },
|
|
165
|
-
{ name = "black" },
|
|
166
|
-
{ name = "flake8" },
|
|
167
|
-
{ name = "isort" },
|
|
168
|
-
{ name = "pytest" },
|
|
169
|
-
{ name = "pytest-cov" },
|
|
170
|
-
{ name = "pytest-xdist" },
|
|
171
|
-
{ name = "teken" },
|
|
172
|
-
]
|
|
173
|
-
|
|
174
|
-
[package.metadata]
|
|
175
|
-
|
|
176
|
-
[package.metadata.requires-dev]
|
|
177
|
-
dev = [
|
|
178
|
-
{ name = "bandit", specifier = ">=1.7.5" },
|
|
179
|
-
{ name = "black", specifier = ">=23.7.0" },
|
|
180
|
-
{ name = "flake8", specifier = ">=6.1" },
|
|
181
|
-
{ name = "isort", specifier = ">=5.12.0" },
|
|
182
|
-
{ name = "pytest", specifier = ">=8.0" },
|
|
183
|
-
{ name = "pytest-cov", specifier = ">=4.1" },
|
|
184
|
-
{ name = "pytest-xdist", specifier = ">=3.0" },
|
|
185
|
-
{ name = "teken", specifier = ">=0.8" },
|
|
186
|
-
]
|
|
187
|
-
|
|
188
157
|
[[package]]
|
|
189
158
|
name = "execnet"
|
|
190
159
|
version = "2.1.2"
|
|
@@ -476,3 +445,34 @@ sdist = { url = "https://files.pythonhosted.org/packages/25/95/3c3eff8e550c1347c
|
|
|
476
445
|
wheels = [
|
|
477
446
|
{ url = "https://files.pythonhosted.org/packages/00/2c/ca005d32831d883b10215a1ea31c32197a3a410f6d4ea3516b3d3c6a1183/teken-0.8.0-py3-none-any.whl", hash = "sha256:385a529df5a76adfff56ba5ae191a1bf8a5573f3698da4cc5bf7a2b5ca7cc311", size = 73189, upload-time = "2026-05-22T19:47:53.959Z" },
|
|
478
447
|
]
|
|
448
|
+
|
|
449
|
+
[[package]]
|
|
450
|
+
name = "tensor-cli"
|
|
451
|
+
version = "0.2.1"
|
|
452
|
+
source = { editable = "." }
|
|
453
|
+
|
|
454
|
+
[package.dev-dependencies]
|
|
455
|
+
dev = [
|
|
456
|
+
{ name = "bandit" },
|
|
457
|
+
{ name = "black" },
|
|
458
|
+
{ name = "flake8" },
|
|
459
|
+
{ name = "isort" },
|
|
460
|
+
{ name = "pytest" },
|
|
461
|
+
{ name = "pytest-cov" },
|
|
462
|
+
{ name = "pytest-xdist" },
|
|
463
|
+
{ name = "teken" },
|
|
464
|
+
]
|
|
465
|
+
|
|
466
|
+
[package.metadata]
|
|
467
|
+
|
|
468
|
+
[package.metadata.requires-dev]
|
|
469
|
+
dev = [
|
|
470
|
+
{ name = "bandit", specifier = ">=1.7.5" },
|
|
471
|
+
{ name = "black", specifier = ">=23.7.0" },
|
|
472
|
+
{ name = "flake8", specifier = ">=6.1" },
|
|
473
|
+
{ name = "isort", specifier = ">=5.12.0" },
|
|
474
|
+
{ name = "pytest", specifier = ">=8.0" },
|
|
475
|
+
{ name = "pytest-cov", specifier = ">=4.1" },
|
|
476
|
+
{ name = "pytest-xdist", specifier = ">=3.0" },
|
|
477
|
+
{ name = "teken", specifier = ">=0.8" },
|
|
478
|
+
]
|
tensor_cli-0.2.0/CLAUDE.md
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
# CLAUDE.md — seed / bootstrap placeholder
|
|
2
|
-
|
|
3
|
-
> **This is a self-initializing seed, not a finished runtime prompt.**
|
|
4
|
-
> Run `/init` (or describe the agent's domain to your AI assistant) to
|
|
5
|
-
> re-initialize this file into a full runtime prompt, using the description
|
|
6
|
-
> below and the scaffolded repo as context.
|
|
7
|
-
|
|
8
|
-
## Agent
|
|
9
|
-
|
|
10
|
-
This repository hosts the **tensor-cli** agent.
|
|
11
|
-
|
|
12
|
-
## Description
|
|
13
|
-
|
|
14
|
-
Agent/CLI for tensor operations and ML tensor manipulation
|
|
15
|
-
|
|
16
|
-
## Re-init instruction
|
|
17
|
-
|
|
18
|
-
This file is a seed. To expand it into your full runtime prompt:
|
|
19
|
-
|
|
20
|
-
1. Open this repo in Claude Code (or your preferred AI assistant).
|
|
21
|
-
2. Run `/init` — the assistant will read the repo, incorporate the description
|
|
22
|
-
above, and replace this seed with a complete `CLAUDE.md`.
|
|
23
|
-
3. Commit the result.
|
|
24
|
-
|
|
25
|
-
Until you run `/init`, `tensor-cli` satisfies the `steward doctor`
|
|
26
|
-
`prompt-file-present` and `backend-consistency` invariants (a `CLAUDE.md`
|
|
27
|
-
exists and `culture.yaml` declares `backend: claude`) but the prompt is not
|
|
28
|
-
yet tailored to this agent's domain.
|
|
File without changes
|
{tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/agent-config/data/backend-fingerprints.yaml
RENAMED
|
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
|
{tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/pypi-maintainer/scripts/switch-source.sh
RENAMED
|
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
|