@alessandroraffa/tangyr 5.0.1 → 6.0.1
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.
- package/README.md +37 -27
- package/dist/index.js +1536 -1031
- package/mappings/loss-severity.yaml +15 -4
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -57,22 +57,22 @@ tangyr <command>
|
|
|
57
57
|
|
|
58
58
|
Options declared on individual commands in addition to the [global flags](#global-flags) below. `--offline`, `--refresh`, and `install`/`sync`'s narrow `--json` are documented in [Remote kit source](#remote-kit-source); `--scope` in [Scope](#scope).
|
|
59
59
|
|
|
60
|
-
| Command | Option | Description
|
|
61
|
-
| -------------------------------------------------------- | ------------------------ |
|
|
62
|
-
| `install`, `sync` | `--loss-report <path>` | Write this run's semantic loss report to `<path
|
|
63
|
-
| `install`, `sync` | `--ignore-errors` | Suppress exit code `3` when the loss report contains `error`-severity entries
|
|
64
|
-
| `install`, `sync` | `--kit <name>` | Kit to install/synchronize: `<name>` for a local source, `<name>@<version>` for a remote one
|
|
65
|
-
| `install`, `uninstall`, `assess` | `--tools <list>` | Comma-separated list of target tools
|
|
66
|
-
| `sync`, `status`, `verify`, `doctor`, `cleanup`, `probe` | `--target <tool>` | Limit the command to a single target
|
|
67
|
-
| `sync` | `--component <name>` | Limit sync to one component type: `instructions`, `agents`, `skills`, `commands`, `rules`, `hooks`, `mcp`, `settings`, `output-styles`, `lsp`
|
|
68
|
-
| `sync` | `--force` | Rewrite managed artifacts even when provenance matches
|
|
69
|
-
| `doctor` | `--fix` | Apply safe automated fixes
|
|
70
|
-
| `cleanup` | `--all` | Include all enabled targets
|
|
71
|
-
| `config` | `--edit` | Interactively edit mutable config fields
|
|
72
|
-
| `auth login` | `--skip-validation` | Store the credential without contacting the configured origin
|
|
73
|
-
| `kit update` | `--kit <name>@<version>` | Remote kit reference to re-fetch into the cache
|
|
74
|
-
| `cache clear` | `[target]` | Positional: kit name or `<name>@<version>`; omit to clear the whole cache
|
|
75
|
-
| `assess`, `detect`, `list`, `probe`, `validate` | `--json` | Replace the command's output with JSON
|
|
60
|
+
| Command | Option | Description |
|
|
61
|
+
| -------------------------------------------------------- | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
62
|
+
| `install`, `sync` | `--loss-report <path>` | Write an **extra copy** of this run's semantic loss report to `<path>`. The report itself is scope state and is rewritten at `<scope>/loss.json` by every `install` and `sync` regardless, whether or not the run exits `3`. |
|
|
63
|
+
| `install`, `sync` | `--ignore-errors` | Suppress exit code `3` when the loss report contains `error`-severity entries |
|
|
64
|
+
| `install`, `sync` | `--kit <name>` | Kit to install/synchronize: `<name>` for a local source, `<name>@<version>` for a remote one |
|
|
65
|
+
| `install`, `uninstall`, `assess` | `--tools <list>` | Comma-separated list of target tools |
|
|
66
|
+
| `sync`, `status`, `verify`, `doctor`, `cleanup`, `probe` | `--target <tool>` | Limit the command to a single target |
|
|
67
|
+
| `sync` | `--component <name>` | Limit sync to one component type: `instructions`, `agents`, `skills`, `commands`, `rules`, `hooks`, `mcp`, `settings`, `output-styles`, `lsp` |
|
|
68
|
+
| `sync` | `--force` | Rewrite managed artifacts even when provenance matches |
|
|
69
|
+
| `doctor` | `--fix` | Apply safe automated fixes |
|
|
70
|
+
| `cleanup` | `--all` | Include all enabled targets |
|
|
71
|
+
| `config` | `--edit` | Interactively edit mutable config fields |
|
|
72
|
+
| `auth login` | `--skip-validation` | Store the credential without contacting the configured origin |
|
|
73
|
+
| `kit update` | `--kit <name>@<version>` | Remote kit reference to re-fetch into the cache |
|
|
74
|
+
| `cache clear` | `[target]` | Positional: kit name or `<name>@<version>`; omit to clear the whole cache |
|
|
75
|
+
| `assess`, `detect`, `list`, `probe`, `validate` | `--json` | Replace the command's output with JSON |
|
|
76
76
|
|
|
77
77
|
### Authentication
|
|
78
78
|
|
|
@@ -365,23 +365,33 @@ acceptedLoss:
|
|
|
365
365
|
|
|
366
366
|
Not every error entry is structural. `rule-not-delivered` (below) reports a rule that did not reach a target on this run, which is usually fixable — by giving the target an instructions path of its own, or by not enabling it. Accept it when you have decided to live with it, not to quiet it.
|
|
367
367
|
|
|
368
|
-
##
|
|
368
|
+
## What did not arrive
|
|
369
369
|
|
|
370
|
-
A
|
|
370
|
+
A kit's artifacts reach a target through that target's own surfaces: a file in its agents directory, a prompt, a workflow, a skill folder, a section in the instructions document it reads. The surfaces differ per target, and some targets have none for a given category.
|
|
371
371
|
|
|
372
|
-
After every target has written, the run measures what is actually on disk and says so — one line per target, the
|
|
372
|
+
After every target has written, the run measures what is actually on disk and says so — one line per target, the counts first, and whatever did **not** arrive named beneath:
|
|
373
373
|
|
|
374
374
|
```text
|
|
375
|
-
|
|
376
|
-
claude-code
|
|
377
|
-
copilot
|
|
378
|
-
codex 0/
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
cline
|
|
375
|
+
What reached each target (measured on disk):
|
|
376
|
+
claude-code agents 1/1 commands 1/1 rules 1/1 skills 1/1 hooks 1/1
|
|
377
|
+
copilot agents 1/1 commands 1/1 rules 1/1 skills 1/1 hooks 1/1
|
|
378
|
+
codex agents 1/1 commands 1/1 rules 0/1 skills 1/1 hooks 1/1
|
|
379
|
+
rules missing: git-safety
|
|
380
|
+
folded into AGENTS.md, which cline wrote last
|
|
381
|
+
cline agents 0/1 commands 1/1 rules 1/1 skills 1/1 hooks 0/1
|
|
382
|
+
agents missing: reviewer
|
|
383
|
+
cline has no agents surface in this scope
|
|
382
384
|
```
|
|
383
385
|
|
|
384
|
-
|
|
386
|
+
Measured on the files, not on what the compilers intended: the two have disagreed, and the files are what the target reads. Nothing is printed when everything arrived; `--verbose` shows the block either way.
|
|
387
|
+
|
|
388
|
+
The same fact reaches the loss report — `<scope>/loss.json`, rewritten by every `install` and `sync`, plus any `--loss-report <path>` copy — as a `rule-not-delivered`, `agent-not-delivered`, `command-not-delivered`, `skill-not-delivered` or `hook-not-delivered` entry, one per artifact per target, at `error` severity — so a run that loses part of the kit exits `3` rather than reporting success. A category the target has no surface for at all is left to the structural entry that already says so (`persona-not-representable`, `hook-as-plugin`), rather than repeated once per artifact.
|
|
389
|
+
|
|
390
|
+
## The loss report
|
|
391
|
+
|
|
392
|
+
`.tangyr/loss.json` (project scope) or `~/.tangyr/loss.json` (global) is written by every `install` and `sync`, and removed by `uninstall` with the manifest. It holds one entry per target and component that could not be translated natively, each with its closed-vocabulary type, its severity and a human-readable detail, under a `generatedAt` timestamp.
|
|
393
|
+
|
|
394
|
+
It used to be written only when `--loss-report <path>` was passed, which nobody passes twice: a project found theirs five days stale, naming a component renamed since, while the kit had grown from two components to thirty-four. A report that is only ever a photograph of one run does not belong in a directory that looks like state.
|
|
385
395
|
|
|
386
396
|
## Exit codes
|
|
387
397
|
|