@detergent-software/atk 3.0.0-dev.2 → 3.0.0-dev.21
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 +361 -0
- package/build/commands/audit.d.ts.map +1 -1
- package/build/commands/audit.js +79 -37
- package/build/commands/audit.js.map +1 -1
- package/build/commands/browse.d.ts.map +1 -1
- package/build/commands/browse.js +119 -154
- package/build/commands/browse.js.map +1 -1
- package/build/commands/cache.d.ts.map +1 -1
- package/build/commands/cache.js +13 -15
- package/build/commands/cache.js.map +1 -1
- package/build/commands/config.d.ts +1 -1
- package/build/commands/config.d.ts.map +1 -1
- package/build/commands/config.js +7 -3
- package/build/commands/config.js.map +1 -1
- package/build/commands/diff.d.ts.map +1 -1
- package/build/commands/diff.js +4 -117
- package/build/commands/diff.js.map +1 -1
- package/build/commands/freeze.d.ts +1 -2
- package/build/commands/freeze.d.ts.map +1 -1
- package/build/commands/freeze.js +17 -37
- package/build/commands/freeze.js.map +1 -1
- package/build/commands/info.d.ts +1 -2
- package/build/commands/info.d.ts.map +1 -1
- package/build/commands/info.js +36 -35
- package/build/commands/info.js.map +1 -1
- package/build/commands/init.d.ts.map +1 -1
- package/build/commands/init.js +39 -405
- package/build/commands/init.js.map +1 -1
- package/build/commands/install.d.ts.map +1 -1
- package/build/commands/install.js +49 -34
- package/build/commands/install.js.map +1 -1
- package/build/commands/list.d.ts +2 -2
- package/build/commands/list.d.ts.map +1 -1
- package/build/commands/list.js +138 -27
- package/build/commands/list.js.map +1 -1
- package/build/commands/outdated.d.ts.map +1 -1
- package/build/commands/outdated.js +20 -10
- package/build/commands/outdated.js.map +1 -1
- package/build/commands/pin.d.ts +1 -2
- package/build/commands/pin.d.ts.map +1 -1
- package/build/commands/pin.js +44 -47
- package/build/commands/pin.js.map +1 -1
- package/build/commands/prune.d.ts.map +1 -1
- package/build/commands/prune.js +76 -151
- package/build/commands/prune.js.map +1 -1
- package/build/commands/publish.d.ts +3 -1
- package/build/commands/publish.d.ts.map +1 -1
- package/build/commands/publish.js +67 -390
- package/build/commands/publish.js.map +1 -1
- package/build/commands/search.d.ts.map +1 -1
- package/build/commands/search.js +14 -19
- package/build/commands/search.js.map +1 -1
- package/build/commands/setup.d.ts +1 -1
- package/build/commands/setup.d.ts.map +1 -1
- package/build/commands/setup.js +48 -253
- package/build/commands/setup.js.map +1 -1
- package/build/commands/sync.d.ts.map +1 -1
- package/build/commands/sync.js +43 -169
- package/build/commands/sync.js.map +1 -1
- package/build/commands/thaw.d.ts +1 -2
- package/build/commands/thaw.d.ts.map +1 -1
- package/build/commands/thaw.js +19 -37
- package/build/commands/thaw.js.map +1 -1
- package/build/commands/uninstall.d.ts.map +1 -1
- package/build/commands/uninstall.js +106 -221
- package/build/commands/uninstall.js.map +1 -1
- package/build/commands/unpin.d.ts +1 -2
- package/build/commands/unpin.d.ts.map +1 -1
- package/build/commands/unpin.js +23 -38
- package/build/commands/unpin.js.map +1 -1
- package/build/commands/update.d.ts.map +1 -1
- package/build/commands/update.js +37 -25
- package/build/commands/update.js.map +1 -1
- package/build/commands/why.d.ts +1 -1
- package/build/commands/why.d.ts.map +1 -1
- package/build/commands/why.js +14 -6
- package/build/commands/why.js.map +1 -1
- package/build/components/AssetDetail.d.ts +1 -3
- package/build/components/AssetDetail.d.ts.map +1 -1
- package/build/components/AssetDetail.js +24 -21
- package/build/components/AssetDetail.js.map +1 -1
- package/build/components/AssetTable.d.ts +5 -2
- package/build/components/AssetTable.d.ts.map +1 -1
- package/build/components/AssetTable.js +37 -40
- package/build/components/AssetTable.js.map +1 -1
- package/build/components/BrowseExpandedBundle.d.ts +7 -0
- package/build/components/BrowseExpandedBundle.d.ts.map +1 -1
- package/build/components/BrowseExpandedBundle.js +19 -0
- package/build/components/BrowseExpandedBundle.js.map +1 -1
- package/build/components/BrowseExpandedRow.d.ts +4 -1
- package/build/components/BrowseExpandedRow.d.ts.map +1 -1
- package/build/components/BrowseExpandedRow.js +24 -3
- package/build/components/BrowseExpandedRow.js.map +1 -1
- package/build/components/BrowseList.d.ts +3 -1
- package/build/components/BrowseList.d.ts.map +1 -1
- package/build/components/BrowseList.js +52 -42
- package/build/components/BrowseList.js.map +1 -1
- package/build/components/DiffView.d.ts +0 -2
- package/build/components/DiffView.d.ts.map +1 -1
- package/build/components/DiffView.js +11 -5
- package/build/components/DiffView.js.map +1 -1
- package/build/components/DryRunBanner.d.ts +3 -3
- package/build/components/DryRunBanner.d.ts.map +1 -1
- package/build/components/DryRunBanner.js +2 -2
- package/build/components/DryRunBanner.js.map +1 -1
- package/build/components/FilterBar.d.ts +10 -3
- package/build/components/FilterBar.d.ts.map +1 -1
- package/build/components/FilterBar.js +4 -4
- package/build/components/FilterBar.js.map +1 -1
- package/build/components/FrozenSkippedHint.d.ts +11 -0
- package/build/components/FrozenSkippedHint.d.ts.map +1 -0
- package/build/components/FrozenSkippedHint.js +12 -0
- package/build/components/FrozenSkippedHint.js.map +1 -0
- package/build/components/HelpBar.d.ts.map +1 -1
- package/build/components/HelpBar.js +3 -3
- package/build/components/HelpBar.js.map +1 -1
- package/build/components/InitSuccess.d.ts +5 -0
- package/build/components/InitSuccess.d.ts.map +1 -0
- package/build/components/InitSuccess.js +20 -0
- package/build/components/InitSuccess.js.map +1 -0
- package/build/components/InstallSummary.d.ts +3 -3
- package/build/components/InstallSummary.d.ts.map +1 -1
- package/build/components/InstallSummary.js +2 -2
- package/build/components/InstallSummary.js.map +1 -1
- package/build/components/Link.d.ts +7 -0
- package/build/components/Link.d.ts.map +1 -0
- package/build/components/Link.js +6 -0
- package/build/components/Link.js.map +1 -0
- package/build/components/ListActionBar.d.ts +11 -0
- package/build/components/ListActionBar.d.ts.map +1 -0
- package/build/components/ListActionBar.js +30 -0
- package/build/components/ListActionBar.js.map +1 -0
- package/build/components/ListBrowseList.d.ts +27 -0
- package/build/components/ListBrowseList.d.ts.map +1 -0
- package/build/components/ListBrowseList.js +57 -0
- package/build/components/ListBrowseList.js.map +1 -0
- package/build/components/ListExpandedRow.d.ts +38 -0
- package/build/components/ListExpandedRow.d.ts.map +1 -0
- package/build/components/ListExpandedRow.js +46 -0
- package/build/components/ListExpandedRow.js.map +1 -0
- package/build/components/ListHelpBar.d.ts +19 -0
- package/build/components/ListHelpBar.d.ts.map +1 -0
- package/build/components/ListHelpBar.js +11 -0
- package/build/components/ListHelpBar.js.map +1 -0
- package/build/components/OrphanListItem.d.ts +15 -0
- package/build/components/OrphanListItem.d.ts.map +1 -0
- package/build/components/OrphanListItem.js +6 -0
- package/build/components/OrphanListItem.js.map +1 -0
- package/build/components/PromptField.d.ts +19 -0
- package/build/components/PromptField.d.ts.map +1 -0
- package/build/components/PromptField.js +7 -0
- package/build/components/PromptField.js.map +1 -0
- package/build/components/StatusBadge.d.ts +1 -1
- package/build/components/StatusBadge.d.ts.map +1 -1
- package/build/components/StatusBadge.js +4 -0
- package/build/components/StatusBadge.js.map +1 -1
- package/build/components/SyncAllInSync.d.ts +14 -0
- package/build/components/SyncAllInSync.d.ts.map +1 -0
- package/build/components/SyncAllInSync.js +10 -0
- package/build/components/SyncAllInSync.js.map +1 -0
- package/build/components/SyncDriftedList.d.ts +24 -0
- package/build/components/SyncDriftedList.d.ts.map +1 -0
- package/build/components/SyncDriftedList.js +17 -0
- package/build/components/SyncDriftedList.js.map +1 -0
- package/build/components/SyncNoAssets.d.ts +12 -0
- package/build/components/SyncNoAssets.d.ts.map +1 -0
- package/build/components/SyncNoAssets.js +9 -0
- package/build/components/SyncNoAssets.js.map +1 -0
- package/build/components/index.d.ts +14 -2
- package/build/components/index.d.ts.map +1 -1
- package/build/components/index.js +14 -2
- package/build/components/index.js.map +1 -1
- package/build/hooks/useBrowseState.d.ts +41 -1
- package/build/hooks/useBrowseState.d.ts.map +1 -1
- package/build/hooks/useBrowseState.js +142 -12
- package/build/hooks/useBrowseState.js.map +1 -1
- package/build/hooks/useConfirmation.d.ts +18 -0
- package/build/hooks/useConfirmation.d.ts.map +1 -0
- package/build/hooks/useConfirmation.js +56 -0
- package/build/hooks/useConfirmation.js.map +1 -0
- package/build/hooks/useInitState.d.ts +72 -0
- package/build/hooks/useInitState.d.ts.map +1 -0
- package/build/hooks/useInitState.js +372 -0
- package/build/hooks/useInitState.js.map +1 -0
- package/build/hooks/useListActions.d.ts +15 -0
- package/build/hooks/useListActions.d.ts.map +1 -0
- package/build/hooks/useListActions.js +155 -0
- package/build/hooks/useListActions.js.map +1 -0
- package/build/hooks/useListState.d.ts +151 -0
- package/build/hooks/useListState.d.ts.map +1 -0
- package/build/hooks/useListState.js +448 -0
- package/build/hooks/useListState.js.map +1 -0
- package/build/hooks/usePruneState.d.ts +76 -0
- package/build/hooks/usePruneState.d.ts.map +1 -0
- package/build/hooks/usePruneState.js +246 -0
- package/build/hooks/usePruneState.js.map +1 -0
- package/build/hooks/usePublishState.d.ts +115 -0
- package/build/hooks/usePublishState.d.ts.map +1 -0
- package/build/hooks/usePublishState.js +673 -0
- package/build/hooks/usePublishState.js.map +1 -0
- package/build/hooks/useSetupState.d.ts +57 -0
- package/build/hooks/useSetupState.d.ts.map +1 -0
- package/build/hooks/useSetupState.js +236 -0
- package/build/hooks/useSetupState.js.map +1 -0
- package/build/hooks/useUninstallState.d.ts +102 -0
- package/build/hooks/useUninstallState.d.ts.map +1 -0
- package/build/hooks/useUninstallState.js +342 -0
- package/build/hooks/useUninstallState.js.map +1 -0
- package/build/lib/adapter.d.ts +21 -0
- package/build/lib/adapter.d.ts.map +1 -1
- package/build/lib/adapter.js +59 -1
- package/build/lib/adapter.js.map +1 -1
- package/build/lib/checksum.d.ts +39 -0
- package/build/lib/checksum.d.ts.map +1 -1
- package/build/lib/checksum.js +101 -13
- package/build/lib/checksum.js.map +1 -1
- package/build/lib/config.d.ts +38 -18
- package/build/lib/config.d.ts.map +1 -1
- package/build/lib/config.js +107 -55
- package/build/lib/config.js.map +1 -1
- package/build/lib/detector.d.ts +2 -11
- package/build/lib/detector.d.ts.map +1 -1
- package/build/lib/detector.js +2 -64
- package/build/lib/detector.js.map +1 -1
- package/build/lib/diagnostics.d.ts +7 -0
- package/build/lib/diagnostics.d.ts.map +1 -1
- package/build/lib/diagnostics.js +54 -34
- package/build/lib/diagnostics.js.map +1 -1
- package/build/lib/diff-command.d.ts +40 -0
- package/build/lib/diff-command.d.ts.map +1 -0
- package/build/lib/diff-command.js +145 -0
- package/build/lib/diff-command.js.map +1 -0
- package/build/lib/diff.d.ts +7 -0
- package/build/lib/diff.d.ts.map +1 -1
- package/build/lib/diff.js +15 -10
- package/build/lib/diff.js.map +1 -1
- package/build/lib/format.d.ts +6 -0
- package/build/lib/format.d.ts.map +1 -0
- package/build/lib/format.js +18 -0
- package/build/lib/format.js.map +1 -0
- package/build/lib/github.d.ts +8 -0
- package/build/lib/github.d.ts.map +1 -1
- package/build/lib/github.js +9 -0
- package/build/lib/github.js.map +1 -1
- package/build/lib/gitignore.d.ts +17 -0
- package/build/lib/gitignore.d.ts.map +1 -1
- package/build/lib/gitignore.js +17 -1
- package/build/lib/gitignore.js.map +1 -1
- package/build/lib/installer.d.ts +1 -0
- package/build/lib/installer.d.ts.map +1 -1
- package/build/lib/installer.js +7 -7
- package/build/lib/installer.js.map +1 -1
- package/build/lib/lockfile.d.ts +19 -17
- package/build/lib/lockfile.d.ts.map +1 -1
- package/build/lib/lockfile.js +43 -67
- package/build/lib/lockfile.js.map +1 -1
- package/build/lib/publisher.d.ts +35 -0
- package/build/lib/publisher.d.ts.map +1 -1
- package/build/lib/publisher.js +210 -16
- package/build/lib/publisher.js.map +1 -1
- package/build/lib/registry.d.ts +20 -5
- package/build/lib/registry.d.ts.map +1 -1
- package/build/lib/registry.js +41 -30
- package/build/lib/registry.js.map +1 -1
- package/build/lib/schemas/config.d.ts +31 -3
- package/build/lib/schemas/config.d.ts.map +1 -1
- package/build/lib/schemas/config.js +21 -2
- package/build/lib/schemas/config.js.map +1 -1
- package/build/lib/schemas/index.d.ts +1 -1
- package/build/lib/schemas/index.d.ts.map +1 -1
- package/build/lib/schemas/index.js +1 -1
- package/build/lib/schemas/index.js.map +1 -1
- package/build/lib/schemas/lockfile.d.ts +18 -2
- package/build/lib/schemas/lockfile.d.ts.map +1 -1
- package/build/lib/schemas/lockfile.js +10 -1
- package/build/lib/schemas/lockfile.js.map +1 -1
- package/build/lib/search.d.ts +15 -1
- package/build/lib/search.d.ts.map +1 -1
- package/build/lib/search.js +65 -65
- package/build/lib/search.js.map +1 -1
- package/build/lib/setup.d.ts +28 -0
- package/build/lib/setup.d.ts.map +1 -0
- package/build/lib/setup.js +98 -0
- package/build/lib/setup.js.map +1 -0
- package/build/lib/sync.d.ts +109 -0
- package/build/lib/sync.d.ts.map +1 -0
- package/build/lib/sync.js +221 -0
- package/build/lib/sync.js.map +1 -0
- package/build/lib/tool-resolver.d.ts +29 -6
- package/build/lib/tool-resolver.d.ts.map +1 -1
- package/build/lib/tool-resolver.js +54 -15
- package/build/lib/tool-resolver.js.map +1 -1
- package/build/lib/updater.d.ts +7 -4
- package/build/lib/updater.d.ts.map +1 -1
- package/build/lib/updater.js +12 -7
- package/build/lib/updater.js.map +1 -1
- package/build/lib/version.js +1 -1
- package/build/lib/version.js.map +1 -1
- package/package.json +79 -65
- package/tool-adapters/claude-code.json +1 -1
- package/tool-adapters/copilot-cli.json +1 -1
package/README.md
ADDED
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
# Agentic Tool Kit (ATK)
|
|
2
|
+
|
|
3
|
+
A CLI-based asset manager for AI coding tools. Think `npm` but for skills, agents, rules, hooks, memory templates, and MCP configs that extend AI coding assistants like Claude Code.
|
|
4
|
+
|
|
5
|
+
## Why ATK?
|
|
6
|
+
|
|
7
|
+
AI coding assistants become far more capable with the right configuration — curated prompts, custom agents, hook scripts, and MCP server setups. But sharing and maintaining these assets across projects and teams is painful. ATK solves this with:
|
|
8
|
+
|
|
9
|
+
- A **searchable registry** of versioned, validated assets
|
|
10
|
+
- **One-command install** with automatic dependency resolution
|
|
11
|
+
- **Integrity tracking** via lockfile with SHA-256 checksums
|
|
12
|
+
- **Trust levels** (vetted / community / experimental) with security review metadata
|
|
13
|
+
- A **tool adapter layer** so assets get placed correctly for each AI tool
|
|
14
|
+
|
|
15
|
+
## Quick Start
|
|
16
|
+
|
|
17
|
+
### Prerequisites
|
|
18
|
+
|
|
19
|
+
- **Node.js** >= 24.0.0
|
|
20
|
+
- **pnpm** 10.5.2+
|
|
21
|
+
|
|
22
|
+
### Installation
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npm install -g @detergent-software/atk
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
#### Dev Channel
|
|
29
|
+
|
|
30
|
+
To install the latest pre-release version from the `develop` branch, use the `@dev` dist-tag:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
npm install -g @detergent-software/atk@dev
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Dev releases follow the format `x.y.z-dev.N` and include features and fixes that haven't been promoted to a stable release yet. Use this to preview upcoming changes or test in-progress work.
|
|
37
|
+
|
|
38
|
+
### Basic Usage
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# Search for assets
|
|
42
|
+
atk search "planning"
|
|
43
|
+
|
|
44
|
+
# Browse the registry interactively
|
|
45
|
+
atk browse
|
|
46
|
+
|
|
47
|
+
# View asset details
|
|
48
|
+
atk info plan-feature
|
|
49
|
+
|
|
50
|
+
# Install an asset (dependencies resolved automatically)
|
|
51
|
+
atk install plan-feature
|
|
52
|
+
|
|
53
|
+
# List installed assets
|
|
54
|
+
atk list
|
|
55
|
+
|
|
56
|
+
# Check for updates
|
|
57
|
+
atk outdated
|
|
58
|
+
|
|
59
|
+
# Update all installed assets
|
|
60
|
+
atk update
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Commands
|
|
64
|
+
|
|
65
|
+
| Command | Description |
|
|
66
|
+
| ----------------------- | ----------------------------------------------------------------- |
|
|
67
|
+
| `atk audit` | Verify installed asset integrity via checksums |
|
|
68
|
+
| `atk browse` | Interactively browse the registry with filtering |
|
|
69
|
+
| `atk cache` | Manage the registry cache |
|
|
70
|
+
| `atk config` | Manage user configuration (`~/.atkrc.json`) |
|
|
71
|
+
| `atk diff <asset>` | Show changes between installed and latest versions |
|
|
72
|
+
| `atk doctor` | Run environment diagnostics |
|
|
73
|
+
| `atk info <asset>` | Show detailed asset information |
|
|
74
|
+
| `atk init` | Scaffold a new asset or bundle |
|
|
75
|
+
| `atk install <asset>` | Install an asset with dependency resolution |
|
|
76
|
+
| `atk list` | List all installed assets |
|
|
77
|
+
| `atk outdated` | Show assets with available updates |
|
|
78
|
+
| `atk pin <asset>` | Pin an asset to its current version |
|
|
79
|
+
| `atk prune` | Remove orphaned dependencies |
|
|
80
|
+
| `atk publish` | Publish an asset or bundle to the registry |
|
|
81
|
+
| `atk search <query>` | Search for assets by keyword, type, or tag |
|
|
82
|
+
| `atk sync` | Re-apply all installed assets from the lockfile |
|
|
83
|
+
| `atk uninstall <asset>` | Remove an asset and clean up placed files |
|
|
84
|
+
| `atk unpin <asset>` | Remove a version pin |
|
|
85
|
+
| `atk update [asset]` | Update installed assets to latest versions |
|
|
86
|
+
| `atk why <asset>` | Explain why an asset is installed (direct, dependency, or orphan) |
|
|
87
|
+
|
|
88
|
+
## Asset Types
|
|
89
|
+
|
|
90
|
+
| Type | Description | Example |
|
|
91
|
+
| -------------------- | ---------------------------------------- | ------------------------------------------------------- |
|
|
92
|
+
| **Skills** | Reusable prompt-based workflows | `plan-feature` — orchestrated implementation planning |
|
|
93
|
+
| **Agents** | Specialized sub-agents for complex tasks | `clarification-agent` — gathers context-aware questions |
|
|
94
|
+
| **Rules** | Project or user-level behavior rules | Configuration conventions, coding standards |
|
|
95
|
+
| **Hooks** | Shell scripts triggered by tool events | Pre-commit validation, post-install setup |
|
|
96
|
+
| **Memory Templates** | Persistent memory structures | Project context templates |
|
|
97
|
+
| **MCP Configs** | Model Context Protocol server configs | External tool integrations |
|
|
98
|
+
|
|
99
|
+
## How It Works
|
|
100
|
+
|
|
101
|
+
1. **Registry** — Assets live in the `assets/` directory, each with a `manifest.json` declaring metadata, dependencies, trust level, and security review info. CI validates asset and bundle changes on pull requests, rebuilds `registry.json` and `schemas/` on pushes to `develop` and `main`, and promotes asset-only changes to `main` through a dedicated promotion branch.
|
|
102
|
+
|
|
103
|
+
2. **Tool Adapters** — JSON adapter files define how assets are placed for each AI tool. The Claude Code adapter knows to put skills in `.claude/commands/`, agents in `.claude/agents/`, etc. New tools can be supported by adding adapter files — no CLI code changes needed.
|
|
104
|
+
|
|
105
|
+
3. **Lockfile** — When you install an asset, ATK records it in `.atk-lock.json` with file paths, SHA-256 checksums, and timestamps. This enables auditing, syncing across machines, and precise uninstallation.
|
|
106
|
+
|
|
107
|
+
4. **Dependency Resolution** — Assets can declare dependencies on other assets. ATK resolves the full dependency graph (depth-first with circular dependency detection) and installs everything in the correct order.
|
|
108
|
+
|
|
109
|
+
## Authoring Assets
|
|
110
|
+
|
|
111
|
+
### Scaffolding a New Asset
|
|
112
|
+
|
|
113
|
+
Use `atk init` to scaffold a new asset or bundle with starter files:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
# Interactive — prompts for name, description, author, tags
|
|
117
|
+
atk init skill
|
|
118
|
+
|
|
119
|
+
# Non-interactive — provide all fields via flags
|
|
120
|
+
atk init agent --name my-agent --description "Does a thing" --author "Jane Doe"
|
|
121
|
+
|
|
122
|
+
# Fork from an installed asset as a starting point
|
|
123
|
+
atk init skill --from plan-feature --name my-planner
|
|
124
|
+
|
|
125
|
+
# Skip the registry name-availability check (offline mode)
|
|
126
|
+
atk init rule --offline
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Supported types: `skill`, `agent`, `rule`, `hook`, `memory-template`, `mcp-config`, `bundle`.
|
|
130
|
+
|
|
131
|
+
This creates a directory with:
|
|
132
|
+
|
|
133
|
+
- `manifest.json` (or `bundle.json` for bundles) — pre-filled metadata with a `$schema` reference
|
|
134
|
+
- Entrypoint file (e.g., `SKILL.md`, `my-agent.md`, `my-hook.sh`) — type-appropriate starter content
|
|
135
|
+
- `README.md` — documentation template
|
|
136
|
+
|
|
137
|
+
To scope the asset to an organization, use the `@org/name` format:
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
atk init skill --name @acme/my-skill
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
This sets the `org` field in the generated manifest automatically.
|
|
144
|
+
|
|
145
|
+
### Publishing to the Registry
|
|
146
|
+
|
|
147
|
+
After editing your asset, publish it to the registry via PR:
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
# Preview what would happen without creating a PR
|
|
151
|
+
atk publish ./my-skill --dry-run
|
|
152
|
+
|
|
153
|
+
# Publish (creates a branch, commits files, opens a PR)
|
|
154
|
+
atk publish ./my-skill
|
|
155
|
+
|
|
156
|
+
# Include a custom note in the PR description
|
|
157
|
+
atk publish ./my-skill --message "Adds support for monorepo projects"
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
The publish workflow:
|
|
161
|
+
|
|
162
|
+
1. **Detects** whether the directory contains a `manifest.json` (asset) or `bundle.json` (bundle)
|
|
163
|
+
2. **Validates** the manifest — checks required fields, file existence, name format, and semver version
|
|
164
|
+
3. **Checks the registry** — determines if this is a new asset or an update to an existing one
|
|
165
|
+
4. **Version bump** — if updating and the manifest version hasn't been bumped, prompts for `patch`, `minor`, or `major`
|
|
166
|
+
5. **Builds a plan** — lists files, target registry path, branch name, and PR metadata
|
|
167
|
+
6. **Executes** — clones the registry repo, creates a branch, copies files, commits, pushes, and opens a PR against the `develop` branch
|
|
168
|
+
|
|
169
|
+
The PR is reviewed and merged through the normal GitHub workflow. Once merged, CI rebuilds `registry.json` and the asset becomes available.
|
|
170
|
+
|
|
171
|
+
## Organizations
|
|
172
|
+
|
|
173
|
+
Organizations provide namespace scoping for assets. They allow teams to maintain their own versions of assets that can shadow global ones.
|
|
174
|
+
|
|
175
|
+
### Setting Your Org
|
|
176
|
+
|
|
177
|
+
There are three ways to set the active org, in priority order:
|
|
178
|
+
|
|
179
|
+
1. **CLI flag** (highest priority):
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
atk search planning --org acme
|
|
183
|
+
atk install my-skill --org acme
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
2. **Lockfile** — stored per-project in `.atk-lock.json` when assets are installed with an org context
|
|
187
|
+
|
|
188
|
+
3. **User config** (lowest priority):
|
|
189
|
+
```bash
|
|
190
|
+
atk config set org acme
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
The resolved org follows the chain: CLI flag > lockfile org > config org. If none are set, only global (unscoped) assets are visible.
|
|
194
|
+
|
|
195
|
+
### Org-Scoped Assets
|
|
196
|
+
|
|
197
|
+
To create an org-scoped asset, set the `org` field in `manifest.json`:
|
|
198
|
+
|
|
199
|
+
```json
|
|
200
|
+
{
|
|
201
|
+
"name": "my-skill",
|
|
202
|
+
"org": "acme",
|
|
203
|
+
"type": "skill",
|
|
204
|
+
"version": "1.0.0",
|
|
205
|
+
...
|
|
206
|
+
}
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
Or use the `@org/name` format when scaffolding:
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
atk init skill --name @acme/my-skill
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
The `org` value must be kebab-case (lowercase letters, numbers, hyphens, starting with a letter).
|
|
216
|
+
|
|
217
|
+
### Shadowing
|
|
218
|
+
|
|
219
|
+
When an org is active, asset resolution follows these rules:
|
|
220
|
+
|
|
221
|
+
- **Org-scoped assets** matching the active org are always visible
|
|
222
|
+
- **Global assets** are visible unless an org-scoped asset exists with the same name and type (shadowed)
|
|
223
|
+
- **Without an org context**, only global (unscoped) assets are visible
|
|
224
|
+
|
|
225
|
+
This lets teams override global assets with org-specific versions while still inheriting the rest of the global registry.
|
|
226
|
+
|
|
227
|
+
### Implicit Org Creation
|
|
228
|
+
|
|
229
|
+
There is no separate "create org" step. Publishing the first asset with an `org` value creates the namespace automatically. Org assets are stored under `assets/<type>s/@<org>/<name>/` in the registry.
|
|
230
|
+
|
|
231
|
+
## Configuration
|
|
232
|
+
|
|
233
|
+
Manage user-level settings stored in `~/.atkrc.json`:
|
|
234
|
+
|
|
235
|
+
```bash
|
|
236
|
+
# List all config keys with current values
|
|
237
|
+
atk config
|
|
238
|
+
|
|
239
|
+
# Get a single value
|
|
240
|
+
atk config org
|
|
241
|
+
|
|
242
|
+
# Set a value
|
|
243
|
+
atk config org acme
|
|
244
|
+
|
|
245
|
+
# Reset a key to its default
|
|
246
|
+
atk config org --reset
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### Available Keys
|
|
250
|
+
|
|
251
|
+
| Key | Default | Description |
|
|
252
|
+
| ----------------- | --------------- | --------------------------------------------------- |
|
|
253
|
+
| `registryUrl` | _(GitHub repo)_ | Override registry URL |
|
|
254
|
+
| `registryBranch` | `main` | Override registry branch for API calls |
|
|
255
|
+
| `defaultTool` | `claude-code` | Default tool when `--tool` is not specified |
|
|
256
|
+
| `cacheDir` | `~/.atk/cache/` | Override cache directory |
|
|
257
|
+
| `cacheTtlMinutes` | `60` | Cache TTL in minutes for registry data |
|
|
258
|
+
| `githubToken` | _(not set)_ | GitHub token override (defaults to `gh auth token`) |
|
|
259
|
+
| `org` | _(not set)_ | Default organization scope for asset resolution |
|
|
260
|
+
|
|
261
|
+
## Development
|
|
262
|
+
|
|
263
|
+
### Setup
|
|
264
|
+
|
|
265
|
+
```bash
|
|
266
|
+
git clone https://github.com/EmergentSoftware/agentic-toolkit.git
|
|
267
|
+
cd agentic-toolkit
|
|
268
|
+
pnpm install
|
|
269
|
+
pnpm build
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
### Commands
|
|
273
|
+
|
|
274
|
+
```bash
|
|
275
|
+
pnpm dev # Watch mode (tsc --watch)
|
|
276
|
+
pnpm build # Full TypeScript build
|
|
277
|
+
pnpm test # Run tests (Vitest)
|
|
278
|
+
pnpm test:watch # Tests in watch mode
|
|
279
|
+
pnpm lint # ESLint
|
|
280
|
+
pnpm lint:fix # Auto-fix lint issues
|
|
281
|
+
pnpm typecheck # Type checking (tsc --noEmit)
|
|
282
|
+
pnpm format # Format with Prettier
|
|
283
|
+
pnpm format:check # Check formatting
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
### Project Structure
|
|
287
|
+
|
|
288
|
+
```
|
|
289
|
+
├── src/
|
|
290
|
+
│ ├── commands/ # Pastel file-based command routes
|
|
291
|
+
│ ├── lib/ # Core business logic
|
|
292
|
+
│ ├── lib/schemas/ # Zod schema definitions
|
|
293
|
+
│ ├── components/ # Ink terminal UI components
|
|
294
|
+
│ └── hooks/ # Custom React hooks
|
|
295
|
+
├── build/ # Compiled output
|
|
296
|
+
├── tool-adapters/ # Tool placement definitions (JSON)
|
|
297
|
+
├── schemas/ # Auto-generated JSON Schema files
|
|
298
|
+
└── scripts/ # Build and validation scripts
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
### Deployment Pipeline
|
|
302
|
+
|
|
303
|
+
This project uses a fully automated release pipeline powered by [Conventional Commits](https://www.conventionalcommits.org/), [commitlint](https://commitlint.js.org/), and [semantic-release](https://semantic-release.gitbook.io/).
|
|
304
|
+
|
|
305
|
+
#### Conventional Commits
|
|
306
|
+
|
|
307
|
+
All commits must follow the Conventional Commits format. The commit type determines what kind of release is produced:
|
|
308
|
+
|
|
309
|
+
| Prefix | Release | Example |
|
|
310
|
+
| ----------------------------- | --------------- | ----------------------------------- |
|
|
311
|
+
| `feat:` | Minor (`0.x.0`) | `feat: add browse command` |
|
|
312
|
+
| `fix:` | Patch (`0.0.x`) | `fix: correct checksum validation` |
|
|
313
|
+
| `perf:` | Patch | `perf: speed up registry fetch` |
|
|
314
|
+
| `refactor:` | Patch | `refactor: simplify resolver logic` |
|
|
315
|
+
| `style:` | Patch | `style: update header colors` |
|
|
316
|
+
| `docs:` | Patch | `docs: add install instructions` |
|
|
317
|
+
| `chore:` | No release | `chore: update dev dependencies` |
|
|
318
|
+
| `feat!:` / `BREAKING CHANGE:` | Major (`x.0.0`) | `feat!: redesign config format` |
|
|
319
|
+
|
|
320
|
+
#### Commitlint
|
|
321
|
+
|
|
322
|
+
Commit messages are validated by [commitlint](https://commitlint.js.org/) (extending `@commitlint/config-conventional`) in two places:
|
|
323
|
+
|
|
324
|
+
- **Locally** — via a commit-msg Git hook that checks messages before they are committed
|
|
325
|
+
- **CI** — the Validate workflow lints all commit messages in a PR against the base branch
|
|
326
|
+
|
|
327
|
+
Non-conforming commits will be rejected.
|
|
328
|
+
|
|
329
|
+
#### Semantic Release
|
|
330
|
+
|
|
331
|
+
[semantic-release](https://semantic-release.gitbook.io/) automates versioning, changelog generation, npm publishing, git tagging, and GitHub Releases based on commit messages. No manual version bumps are needed — the version in `package.json` is managed entirely by the pipeline.
|
|
332
|
+
|
|
333
|
+
The release workflow runs on two branches:
|
|
334
|
+
|
|
335
|
+
| Branch | Trigger | npm Tag | Version Format | Example |
|
|
336
|
+
| --------- | ------------------------ | -------- | -------------- | ------------- |
|
|
337
|
+
| `main` | Push to `main` | `latest` | `x.y.z` | `1.2.0` |
|
|
338
|
+
| `develop` | PR merged into `develop` | `dev` | `x.y.z-dev.N` | `1.3.0-dev.1` |
|
|
339
|
+
|
|
340
|
+
**Pipeline steps:**
|
|
341
|
+
|
|
342
|
+
1. **Release** — on push to `main` or `develop`, invokes `semantic-release` which:
|
|
343
|
+
- Analyzes commits since the last release to determine the version bump
|
|
344
|
+
- Generates release notes grouped by type (Features, Bug Fixes, Performance, etc.)
|
|
345
|
+
- Updates `CHANGELOG.md`
|
|
346
|
+
- Publishes the package to npm
|
|
347
|
+
- Creates a git tag and GitHub Release
|
|
348
|
+
- Commits the updated changelog and `package.json` version
|
|
349
|
+
|
|
350
|
+
#### PR Validation
|
|
351
|
+
|
|
352
|
+
Pull requests targeting `main` or `develop` run linting, type checking, tests, and commitlint.
|
|
353
|
+
|
|
354
|
+
## Tech Stack
|
|
355
|
+
|
|
356
|
+
**Runtime:** Node.js >= 24, TypeScript 5.7+, ES2024
|
|
357
|
+
**CLI:** Pastel (file-based routing) + Ink (React for terminals) + React 19
|
|
358
|
+
**Validation:** Zod 4 (runtime schemas + JSON Schema export)
|
|
359
|
+
**Auth:** GitHub CLI (`gh auth token`) / `GITHUB_TOKEN`
|
|
360
|
+
**Distribution:** npm (`@detergent-software` scope)
|
|
361
|
+
**CI/CD:** GitHub Actions + semantic-release
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/commands/audit.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/commands/audit.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,eAAO,MAAM,WAAW,mDAAmD,CAAC;AAE5E,eAAO,MAAM,OAAO;;;iBAmBlB,CAAC;AAWH,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC,CAAC;AAOF,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,2CAwNtE"}
|
package/build/commands/audit.js
CHANGED
|
@@ -6,10 +6,11 @@ import { z } from 'zod';
|
|
|
6
6
|
import { FileStatusIcon, Spinner } from '../components/index.js';
|
|
7
7
|
import { useCommand } from '../hooks/useCommand.js';
|
|
8
8
|
import { resolveInstalledPaths } from '../lib/adapter.js';
|
|
9
|
-
import { verifyChecksums } from '../lib/checksum.js';
|
|
9
|
+
import { verifyChecksums, verifyConfigEntries } from '../lib/checksum.js';
|
|
10
|
+
import { isFrozenInConfig, loadProjectConfig } from '../lib/config.js';
|
|
10
11
|
import { readLockfile } from '../lib/lockfile.js';
|
|
11
12
|
import { findProjectRoot } from '../lib/paths.js';
|
|
12
|
-
import {
|
|
13
|
+
import { resolveTools } from '../lib/tool-resolver.js';
|
|
13
14
|
export const description = 'Verify asset integrity via checksum validation';
|
|
14
15
|
export const options = z.object({
|
|
15
16
|
projectRoot: z
|
|
@@ -30,39 +31,64 @@ export const options = z.object({
|
|
|
30
31
|
export default function Audit({ options: { projectRoot, tool } }) {
|
|
31
32
|
const state = useCommand(async (progress) => {
|
|
32
33
|
const projectDir = findProjectRoot(projectRoot);
|
|
33
|
-
const
|
|
34
|
+
const resolved = await resolveTools(tool);
|
|
34
35
|
progress('Reading lockfile...');
|
|
35
36
|
const lockfile = await readLockfile(projectDir);
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
if (asset.frozen) {
|
|
43
|
-
entries.push({ asset, failures: [], status: 'frozen' });
|
|
37
|
+
const projectConfig = await loadProjectConfig(projectDir);
|
|
38
|
+
const toolResults = [];
|
|
39
|
+
for (const { adapter: toolAdapter, tool: toolName } of resolved) {
|
|
40
|
+
const toolAssets = lockfile.assets ?? [];
|
|
41
|
+
if (toolAssets.length === 0) {
|
|
42
|
+
toolResults.push({ entries: [], tool: toolName });
|
|
44
43
|
continue;
|
|
45
44
|
}
|
|
46
|
-
const
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
45
|
+
const entries = [];
|
|
46
|
+
for (const asset of toolAssets) {
|
|
47
|
+
progress(`Verifying ${asset.name} for ${toolName}...`);
|
|
48
|
+
if (isFrozenInConfig(projectConfig, asset.name, asset.type, asset.org)) {
|
|
49
|
+
entries.push({ asset, configFailures: [], failures: [], status: 'frozen' });
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
const resolvedPaths = resolveInstalledPaths(asset, toolAdapter, projectDir);
|
|
53
|
+
const filesToCheck = resolvedPaths.files.map((f) => ({
|
|
54
|
+
checksum: f.checksum,
|
|
55
|
+
path: join(projectDir, f.installedPath),
|
|
56
|
+
}));
|
|
57
|
+
const failures = await verifyChecksums(filesToCheck);
|
|
58
|
+
// Verify config entries if the asset has any
|
|
59
|
+
const configFailures = asset.configEntries?.length
|
|
60
|
+
? await verifyConfigEntries(asset.configEntries, projectDir)
|
|
61
|
+
: [];
|
|
62
|
+
// Determine overall asset status with priority:
|
|
63
|
+
// modified > config-modified > missing > config-missing > ok
|
|
64
|
+
let assetStatus = 'ok';
|
|
65
|
+
// File-level status
|
|
66
|
+
if (failures.length > 0) {
|
|
67
|
+
const hasModified = failures.some((f) => !f.actual.startsWith('FILE_NOT_FOUND'));
|
|
68
|
+
if (hasModified) {
|
|
69
|
+
assetStatus = 'modified';
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
assetStatus = 'missing';
|
|
73
|
+
}
|
|
58
74
|
}
|
|
59
|
-
|
|
60
|
-
|
|
75
|
+
// Config-level status (only escalate, never downgrade)
|
|
76
|
+
if (configFailures.length > 0) {
|
|
77
|
+
const hasConfigModified = configFailures.some((f) => f.reason === 'CONFIG_CHECKSUM_MISMATCH');
|
|
78
|
+
const hasConfigMissing = configFailures.some((f) => f.reason === 'CONFIG_FILE_NOT_FOUND' || f.reason === 'CONFIG_KEY_NOT_FOUND');
|
|
79
|
+
if (hasConfigModified && assetStatus !== 'modified') {
|
|
80
|
+
assetStatus = 'config-modified';
|
|
81
|
+
}
|
|
82
|
+
else if (hasConfigMissing && assetStatus === 'ok') {
|
|
83
|
+
assetStatus = 'config-missing';
|
|
84
|
+
}
|
|
61
85
|
}
|
|
86
|
+
entries.push({ asset, configFailures, failures, status: assetStatus });
|
|
62
87
|
}
|
|
63
|
-
entries.
|
|
88
|
+
entries.sort((a, b) => a.asset.type.localeCompare(b.asset.type) || a.asset.name.localeCompare(b.asset.name));
|
|
89
|
+
toolResults.push({ entries, tool: toolName });
|
|
64
90
|
}
|
|
65
|
-
return
|
|
91
|
+
return toolResults;
|
|
66
92
|
}, [tool]);
|
|
67
93
|
if (state.status === 'loading') {
|
|
68
94
|
return _jsx(Spinner, { message: state.message });
|
|
@@ -70,15 +96,31 @@ export default function Audit({ options: { projectRoot, tool } }) {
|
|
|
70
96
|
if (state.status === 'error') {
|
|
71
97
|
return _jsxs(Text, { color: 'red', children: ["Error: ", state.message] });
|
|
72
98
|
}
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
99
|
+
const toolResults = state.data;
|
|
100
|
+
return (_jsx(Box, { flexDirection: 'column', children: toolResults.map(({ entries, tool: resolvedTool }, index) => {
|
|
101
|
+
if (entries.length === 0) {
|
|
102
|
+
return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { dimColor: true, children: ["No assets installed for ", resolvedTool, ". Nothing to audit."] }), index < toolResults.length - 1 && _jsx(Text, { children: " " })] }, resolvedTool));
|
|
103
|
+
}
|
|
104
|
+
const okCount = entries.filter((e) => e.status === 'ok').length;
|
|
105
|
+
const frozenCount = entries.filter((e) => e.status === 'frozen').length;
|
|
106
|
+
const modifiedCount = entries.filter((e) => e.status === 'modified').length;
|
|
107
|
+
const missingCount = entries.filter((e) => e.status === 'missing').length;
|
|
108
|
+
const configModifiedCount = entries.filter((e) => e.status === 'config-modified').length;
|
|
109
|
+
const configMissingCount = entries.filter((e) => e.status === 'config-missing').length;
|
|
110
|
+
const allOk = modifiedCount === 0 &&
|
|
111
|
+
missingCount === 0 &&
|
|
112
|
+
configModifiedCount === 0 &&
|
|
113
|
+
configMissingCount === 0;
|
|
114
|
+
return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { bold: true, children: ["Integrity audit for ", _jsx(Text, { color: 'cyan', children: resolvedTool })] }), _jsx(Text, { children: " " }), entries.map((entry) => (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { children: [_jsx(FileStatusIcon, { status: entry.status }), " ", _jsx(Text, { bold: true, children: entry.asset.name }), _jsxs(Text, { dimColor: true, children: [' ', "(", entry.asset.type, ") v", entry.asset.version] }), entry.status === 'ok' && _jsx(Text, { color: 'green', children: " \u2014 intact" }), entry.status === 'frozen' && _jsx(Text, { color: 'cyan', children: " \u2014 frozen (content-locked)" }), entry.status === 'modified' && _jsx(Text, { color: 'yellow', children: " \u2014 modified" }), entry.status === 'missing' && _jsx(Text, { color: 'red', children: " \u2014 files missing" }), entry.status === 'config-modified' && (_jsx(Text, { color: 'magenta', children: " \u2014 config modified" })), entry.status === 'config-missing' && (_jsx(Text, { color: 'red', children: " \u2014 config entries missing" }))] }), entry.failures.map((f) => (_jsxs(Text, { dimColor: true, children: [' ', f.actual.startsWith('FILE_NOT_FOUND') ? '✕ missing:' : '⚠ changed:', " ", f.path] }, f.path))), entry.configFailures.map((cf) => (_jsxs(Text, { dimColor: true, children: [' ', cf.reason === 'CONFIG_CHECKSUM_MISMATCH'
|
|
115
|
+
? `⚠ config changed: ${cf.file} → ${cf.key}`
|
|
116
|
+
: `✕ config missing: ${cf.file} → ${cf.key}`] }, `${cf.file}:${cf.key}`)))] }, `${entry.asset.type}/${entry.asset.name}`))), _jsx(Text, { children: " " }), allOk ? (_jsxs(Text, { color: 'green', children: ["\u2713 All ", okCount + frozenCount, " asset", okCount + frozenCount !== 1 ? 's' : '', " passed integrity check.", frozenCount > 0 && _jsxs(Text, { color: 'cyan', children: [" (", frozenCount, " frozen)"] })] })) : (_jsxs(Box, { flexDirection: 'column', children: [_jsx(Text, { children: [
|
|
117
|
+
okCount > 0 && (_jsxs(Text, { color: 'green', children: [okCount, " ok"] }, 'ok')),
|
|
118
|
+
frozenCount > 0 && (_jsxs(Text, { color: 'cyan', children: [frozenCount, " frozen"] }, 'frozen')),
|
|
119
|
+
modifiedCount > 0 && (_jsxs(Text, { color: 'yellow', children: [modifiedCount, " modified"] }, 'modified')),
|
|
120
|
+
configModifiedCount > 0 && (_jsxs(Text, { color: 'magenta', children: [configModifiedCount, " config modified"] }, 'config-modified')),
|
|
121
|
+
missingCount > 0 && (_jsxs(Text, { color: 'red', children: [missingCount, " missing"] }, 'missing')),
|
|
122
|
+
configMissingCount > 0 && (_jsxs(Text, { color: 'red', children: [configMissingCount, " config missing"] }, 'config-missing')),
|
|
123
|
+
].filter(Boolean).flatMap((el, i) => (i > 0 ? [_jsx(Text, { children: ", " }, `sep-${i}`), el] : [el])) }), _jsxs(Text, { dimColor: true, children: ["Run ", _jsx(Text, { bold: true, children: "atk sync" }), " to restore assets to their expected state."] })] })), index < toolResults.length - 1 && _jsx(Text, { children: " " })] }, resolvedTool));
|
|
124
|
+
}) }));
|
|
83
125
|
}
|
|
84
126
|
//# sourceMappingURL=audit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/commands/audit.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/commands/audit.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browse.d.ts","sourceRoot":"","sources":["../../src/commands/browse.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"browse.d.ts","sourceRoot":"","sources":["../../src/commands/browse.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAqCxB,eAAO,MAAM,WAAW,4CAA4C,CAAC;AASrE,eAAO,MAAM,OAAO;;;;;iBAqClB,CAAC;AAEH,eAAO,MAAM,IAAI,gDAAwE,CAAC;AAE1F,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAC7B,IAAI,EAAE,CAAC,SAAS,CAAC,EACjB,OAAO,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAC9D,EAAE,KAAK,2CA2MP"}
|