auden 0.1.0-alpha.2
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/LICENSE +21 -0
- package/README.md +59 -0
- package/dist/auden-paths.d.ts +8 -0
- package/dist/auden-paths.d.ts.map +1 -0
- package/dist/auden-paths.js +10 -0
- package/dist/auden-paths.js.map +1 -0
- package/dist/bin.d.ts +11 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +13 -0
- package/dist/bin.js.map +1 -0
- package/dist/chunk.d.ts +3 -0
- package/dist/chunk.d.ts.map +1 -0
- package/dist/chunk.js +13 -0
- package/dist/chunk.js.map +1 -0
- package/dist/commands/doctor.d.ts +13 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +125 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/eval/index.d.ts +2 -0
- package/dist/commands/eval/index.d.ts.map +1 -0
- package/dist/commands/eval/index.js +2 -0
- package/dist/commands/eval/index.js.map +1 -0
- package/dist/commands/eval/run.d.ts +38 -0
- package/dist/commands/eval/run.d.ts.map +1 -0
- package/dist/commands/eval/run.js +179 -0
- package/dist/commands/eval/run.js.map +1 -0
- package/dist/commands/guides/active.d.ts +2 -0
- package/dist/commands/guides/active.d.ts.map +1 -0
- package/dist/commands/guides/active.js +38 -0
- package/dist/commands/guides/active.js.map +1 -0
- package/dist/commands/guides/index.d.ts +2 -0
- package/dist/commands/guides/index.d.ts.map +1 -0
- package/dist/commands/guides/index.js +13 -0
- package/dist/commands/guides/index.js.map +1 -0
- package/dist/commands/guides/project.d.ts +13 -0
- package/dist/commands/guides/project.d.ts.map +1 -0
- package/dist/commands/guides/project.js +71 -0
- package/dist/commands/guides/project.js.map +1 -0
- package/dist/commands/guides/search.d.ts +8 -0
- package/dist/commands/guides/search.d.ts.map +1 -0
- package/dist/commands/guides/search.js +46 -0
- package/dist/commands/guides/search.js.map +1 -0
- package/dist/commands/init.d.ts +43 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +436 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/mcp.d.ts +23 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +55 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/pull.d.ts +38 -0
- package/dist/commands/pull.d.ts.map +1 -0
- package/dist/commands/pull.js +127 -0
- package/dist/commands/pull.js.map +1 -0
- package/dist/commands/rules/export.d.ts +140 -0
- package/dist/commands/rules/export.d.ts.map +1 -0
- package/dist/commands/rules/export.js +635 -0
- package/dist/commands/rules/export.js.map +1 -0
- package/dist/commands/rules/import.d.ts +33 -0
- package/dist/commands/rules/import.d.ts.map +1 -0
- package/dist/commands/rules/import.js +122 -0
- package/dist/commands/rules/import.js.map +1 -0
- package/dist/commands/rules/index.d.ts +2 -0
- package/dist/commands/rules/index.d.ts.map +1 -0
- package/dist/commands/rules/index.js +13 -0
- package/dist/commands/rules/index.js.map +1 -0
- package/dist/commands/rules/watch.d.ts +43 -0
- package/dist/commands/rules/watch.d.ts.map +1 -0
- package/dist/commands/rules/watch.js +125 -0
- package/dist/commands/rules/watch.js.map +1 -0
- package/dist/commands/status.d.ts +2 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +61 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/suggest.d.ts +8 -0
- package/dist/commands/suggest.d.ts.map +1 -0
- package/dist/commands/suggest.js +43 -0
- package/dist/commands/suggest.js.map +1 -0
- package/dist/commands/sync.d.ts +23 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +193 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/verdict/index.d.ts +2 -0
- package/dist/commands/verdict/index.d.ts.map +1 -0
- package/dist/commands/verdict/index.js +11 -0
- package/dist/commands/verdict/index.js.map +1 -0
- package/dist/commands/verdict/record.d.ts +18 -0
- package/dist/commands/verdict/record.d.ts.map +1 -0
- package/dist/commands/verdict/record.js +60 -0
- package/dist/commands/verdict/record.js.map +1 -0
- package/dist/config.d.ts +96 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +246 -0
- package/dist/config.js.map +1 -0
- package/dist/context/pull.d.ts +40 -0
- package/dist/context/pull.d.ts.map +1 -0
- package/dist/context/pull.js +46 -0
- package/dist/context/pull.js.map +1 -0
- package/dist/dashboard-health.d.ts +20 -0
- package/dist/dashboard-health.d.ts.map +1 -0
- package/dist/dashboard-health.js +24 -0
- package/dist/dashboard-health.js.map +1 -0
- package/dist/eval-provider.d.ts +30 -0
- package/dist/eval-provider.d.ts.map +1 -0
- package/dist/eval-provider.js +359 -0
- package/dist/eval-provider.js.map +1 -0
- package/dist/eval-summary.d.ts +24 -0
- package/dist/eval-summary.d.ts.map +1 -0
- package/dist/eval-summary.js +30 -0
- package/dist/eval-summary.js.map +1 -0
- package/dist/feedback/extract.d.ts +6 -0
- package/dist/feedback/extract.d.ts.map +1 -0
- package/dist/feedback/extract.js +580 -0
- package/dist/feedback/extract.js.map +1 -0
- package/dist/http-retry.d.ts +23 -0
- package/dist/http-retry.d.ts.map +1 -0
- package/dist/http-retry.js +54 -0
- package/dist/http-retry.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/client.d.ts +70 -0
- package/dist/mcp/client.d.ts.map +1 -0
- package/dist/mcp/client.js +121 -0
- package/dist/mcp/client.js.map +1 -0
- package/dist/mcp/scope.d.ts +30 -0
- package/dist/mcp/scope.d.ts.map +1 -0
- package/dist/mcp/scope.js +64 -0
- package/dist/mcp/scope.js.map +1 -0
- package/dist/mcp/server.d.ts +57 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +427 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/write-items.d.ts +34 -0
- package/dist/mcp/write-items.d.ts.map +1 -0
- package/dist/mcp/write-items.js +59 -0
- package/dist/mcp/write-items.js.map +1 -0
- package/dist/rules/deletions-client.d.ts +16 -0
- package/dist/rules/deletions-client.d.ts.map +1 -0
- package/dist/rules/deletions-client.js +40 -0
- package/dist/rules/deletions-client.js.map +1 -0
- package/dist/rules/diff.d.ts +19 -0
- package/dist/rules/diff.d.ts.map +1 -0
- package/dist/rules/diff.js +36 -0
- package/dist/rules/diff.js.map +1 -0
- package/dist/rules/discover.d.ts +81 -0
- package/dist/rules/discover.d.ts.map +1 -0
- package/dist/rules/discover.js +307 -0
- package/dist/rules/discover.js.map +1 -0
- package/dist/rules/file-origin.d.ts +16 -0
- package/dist/rules/file-origin.d.ts.map +1 -0
- package/dist/rules/file-origin.js +31 -0
- package/dist/rules/file-origin.js.map +1 -0
- package/dist/rules/global-flag.d.ts +12 -0
- package/dist/rules/global-flag.d.ts.map +1 -0
- package/dist/rules/global-flag.js +15 -0
- package/dist/rules/global-flag.js.map +1 -0
- package/dist/rules/import-client.d.ts +37 -0
- package/dist/rules/import-client.d.ts.map +1 -0
- package/dist/rules/import-client.js +98 -0
- package/dist/rules/import-client.js.map +1 -0
- package/dist/rules/init-pull.d.ts +34 -0
- package/dist/rules/init-pull.d.ts.map +1 -0
- package/dist/rules/init-pull.js +43 -0
- package/dist/rules/init-pull.js.map +1 -0
- package/dist/rules/member-files-client.d.ts +17 -0
- package/dist/rules/member-files-client.d.ts.map +1 -0
- package/dist/rules/member-files-client.js +29 -0
- package/dist/rules/member-files-client.js.map +1 -0
- package/dist/rules/path-contains.d.ts +9 -0
- package/dist/rules/path-contains.d.ts.map +1 -0
- package/dist/rules/path-contains.js +17 -0
- package/dist/rules/path-contains.js.map +1 -0
- package/dist/rules/payload.d.ts +13 -0
- package/dist/rules/payload.d.ts.map +1 -0
- package/dist/rules/payload.js +35 -0
- package/dist/rules/payload.js.map +1 -0
- package/dist/rules/pull-bundle.d.ts +13 -0
- package/dist/rules/pull-bundle.d.ts.map +1 -0
- package/dist/rules/pull-bundle.js +32 -0
- package/dist/rules/pull-bundle.js.map +1 -0
- package/dist/rules/watch.d.ts +121 -0
- package/dist/rules/watch.d.ts.map +1 -0
- package/dist/rules/watch.js +457 -0
- package/dist/rules/watch.js.map +1 -0
- package/dist/skill-template.d.ts +19 -0
- package/dist/skill-template.d.ts.map +1 -0
- package/dist/skill-template.js +174 -0
- package/dist/skill-template.js.map +1 -0
- package/dist/sync-batches.d.ts +37 -0
- package/dist/sync-batches.d.ts.map +1 -0
- package/dist/sync-batches.js +67 -0
- package/dist/sync-batches.js.map +1 -0
- package/dist/sync-client.d.ts +22 -0
- package/dist/sync-client.d.ts.map +1 -0
- package/dist/sync-client.js +38 -0
- package/dist/sync-client.js.map +1 -0
- package/dist/sync-response.d.ts +23 -0
- package/dist/sync-response.d.ts.map +1 -0
- package/dist/sync-response.js +22 -0
- package/dist/sync-response.js.map +1 -0
- package/dist/token-verify.d.ts +14 -0
- package/dist/token-verify.d.ts.map +1 -0
- package/dist/token-verify.js +30 -0
- package/dist/token-verify.js.map +1 -0
- package/dist/usage/extract.d.ts +31 -0
- package/dist/usage/extract.d.ts.map +1 -0
- package/dist/usage/extract.js +200 -0
- package/dist/usage/extract.js.map +1 -0
- package/dist/usage/providers.d.ts +8 -0
- package/dist/usage/providers.d.ts.map +1 -0
- package/dist/usage/providers.js +23 -0
- package/dist/usage/providers.js.map +1 -0
- package/dist/verdict-queue.d.ts +50 -0
- package/dist/verdict-queue.d.ts.map +1 -0
- package/dist/verdict-queue.js +131 -0
- package/dist/verdict-queue.js.map +1 -0
- package/package.json +72 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Auden
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# auden
|
|
2
|
+
|
|
3
|
+
Local-first CLI for [Auden](https://app.auden.to) — a feedback layer for AI coding agents. Auden grades what your agents actually did against the guides you write (`AGENTS.md`, `CLAUDE.md`, `.cursorrules`, …) and shows you which instructions work.
|
|
4
|
+
|
|
5
|
+
The CLI is the on-device half of the product: it hooks into your agent's lifecycle, evaluates actions locally, and syncs **only verdicts and metadata** to your dashboard. Raw hook data, file contents, and conversation transcripts never leave your machine.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install -g auden
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
A global install is required (not just `npx`) because the Claude Code Stop hook that `auden init` registers invokes `auden eval` from your agent's session — the binary must be on `PATH`. Node 20+ required.
|
|
14
|
+
|
|
15
|
+
## Quick start
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
cd your-project
|
|
19
|
+
auden init # no token or account needed
|
|
20
|
+
auden doctor # verify hooks + config
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
`auden init` detects Claude Code, registers a PostToolUse action-logging hook and a Stop hook that runs `auden eval` at session end, scaffolds `AGENTS.md` if missing, and installs a user-invocable Claude Code skill. Everything local — hooks, logging, on-device evaluation — works without an account.
|
|
24
|
+
|
|
25
|
+
To sync verdicts to your dashboard, connect once with a CLI token (dashboard → Settings → Developer → CLI Token):
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
auden sync --token <token> # remembered after the first successful sync
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
(`auden init --token <token>` also stores it, if you prefer one step.) Then just work normally — your dashboard feed fills in as your agent acts.
|
|
32
|
+
|
|
33
|
+
## Commands
|
|
34
|
+
|
|
35
|
+
| Command | What it does |
|
|
36
|
+
|---|---|
|
|
37
|
+
| `auden init` | Set up hooks, config (`~/.auden/`), and the Claude Code skill |
|
|
38
|
+
| `auden doctor` | Check your environment for common setup issues |
|
|
39
|
+
| `auden eval` | Evaluate logged session actions against active guides (run by the Stop hook) |
|
|
40
|
+
| `auden sync` | Push queued verdicts + extracted feedback, pull the guide bundle |
|
|
41
|
+
| `auden pull <bundle>` | Pull a context bundle's canonical items into a local directory as Markdown (default `.auden/context/<bundle>/`) |
|
|
42
|
+
| `auden mcp` | Run the Auden MCP server, exposing your context layer (bundles + inbox) to any agent |
|
|
43
|
+
| `auden rules import` | Discover and import existing guide files (`AGENTS.md`, `.agents/`, `CLAUDE.md`, `.claude/rules/`, `.cursorrules`, `.cursor/rules/*.mdc`) |
|
|
44
|
+
| `auden rules export` | Write imported guides back to disk (dry-run by default) |
|
|
45
|
+
| `auden rules watch` | Keep imported guide files in sync as they change |
|
|
46
|
+
| `auden guides active` / `search` | List or search your synced guides |
|
|
47
|
+
| `auden verdict record` | Record a manual verdict for an action |
|
|
48
|
+
| `auden suggest` | Review pending guide suggestions |
|
|
49
|
+
| `auden status` | Show queue + config status |
|
|
50
|
+
|
|
51
|
+
## Privacy
|
|
52
|
+
|
|
53
|
+
- Evaluation runs on-device; tier-3 LLM calls use **your** configured provider (Anthropic, OpenAI-compatible, Google, or Ollama) and send action metadata + guide text — never file contents.
|
|
54
|
+
- Only verdicts, action metadata, and guide file content you explicitly import are synced.
|
|
55
|
+
- No telemetry.
|
|
56
|
+
|
|
57
|
+
## Links
|
|
58
|
+
|
|
59
|
+
- Dashboard: https://app.auden.to
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const AUDEN_HOME: string;
|
|
2
|
+
export declare const AUDEN_CONFIG: string;
|
|
3
|
+
export declare const AUDEN_HOOKS_DIR: string;
|
|
4
|
+
export declare const AUDEN_HOOK_SCRIPT: string;
|
|
5
|
+
export declare const AUDEN_RUNS_DIR: string;
|
|
6
|
+
export declare const AUDEN_QUEUE_DIR: string;
|
|
7
|
+
export declare const AUDEN_GUIDES_FILE: string;
|
|
8
|
+
//# sourceMappingURL=auden-paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auden-paths.d.ts","sourceRoot":"","sources":["../src/auden-paths.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,UAAU,QAA4B,CAAA;AACnD,eAAO,MAAM,YAAY,QAAkC,CAAA;AAC3D,eAAO,MAAM,eAAe,QAA4B,CAAA;AACxD,eAAO,MAAM,iBAAiB,QAA0C,CAAA;AACxE,eAAO,MAAM,cAAc,QAA2B,CAAA;AACtD,eAAO,MAAM,eAAe,QAA4B,CAAA;AACxD,eAAO,MAAM,iBAAiB,QAAkC,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { homedir } from 'node:os';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
export const AUDEN_HOME = join(homedir(), '.auden');
|
|
4
|
+
export const AUDEN_CONFIG = join(AUDEN_HOME, 'config.json');
|
|
5
|
+
export const AUDEN_HOOKS_DIR = join(AUDEN_HOME, 'hooks');
|
|
6
|
+
export const AUDEN_HOOK_SCRIPT = join(AUDEN_HOOKS_DIR, 'log-action.mjs');
|
|
7
|
+
export const AUDEN_RUNS_DIR = join(AUDEN_HOME, 'runs');
|
|
8
|
+
export const AUDEN_QUEUE_DIR = join(AUDEN_HOME, 'queue');
|
|
9
|
+
export const AUDEN_GUIDES_FILE = join(AUDEN_HOME, 'guides.json');
|
|
10
|
+
//# sourceMappingURL=auden-paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auden-paths.js","sourceRoot":"","sources":["../src/auden-paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAA;AACnD,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;AAC3D,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;AACxD,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAA;AACxE,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;AACtD,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;AACxD,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA"}
|
package/dist/bin.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* bin.ts – entry point for the `auden` CLI executable.
|
|
4
|
+
*
|
|
5
|
+
* Kept deliberately thin: just bootstraps citty and delegates to
|
|
6
|
+
* the main command definition in index.ts.
|
|
7
|
+
*
|
|
8
|
+
* Target runtime: Node 20+
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=bin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG"}
|
package/dist/bin.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* bin.ts – entry point for the `auden` CLI executable.
|
|
4
|
+
*
|
|
5
|
+
* Kept deliberately thin: just bootstraps citty and delegates to
|
|
6
|
+
* the main command definition in index.ts.
|
|
7
|
+
*
|
|
8
|
+
* Target runtime: Node 20+
|
|
9
|
+
*/
|
|
10
|
+
import { runMain } from 'citty';
|
|
11
|
+
import { mainCommand } from './index.js';
|
|
12
|
+
runMain(mainCommand);
|
|
13
|
+
//# sourceMappingURL=bin.js.map
|
package/dist/bin.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE/B,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,OAAO,CAAC,WAAW,CAAC,CAAA"}
|
package/dist/chunk.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk.d.ts","sourceRoot":"","sources":["../src/chunk.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE,CAQ7D"}
|
package/dist/chunk.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Split `items` into consecutive chunks of at most `size` elements. */
|
|
2
|
+
export function chunkArray(items, size) {
|
|
3
|
+
if (size <= 0)
|
|
4
|
+
throw new Error('chunkArray: size must be a positive integer');
|
|
5
|
+
if (items.length === 0)
|
|
6
|
+
return [];
|
|
7
|
+
const chunks = [];
|
|
8
|
+
for (let i = 0; i < items.length; i += size) {
|
|
9
|
+
chunks.push(items.slice(i, i + size));
|
|
10
|
+
}
|
|
11
|
+
return chunks;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk.js","sourceRoot":"","sources":["../src/chunk.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,MAAM,UAAU,UAAU,CAAI,KAAU,EAAE,IAAY;IACpD,IAAI,IAAI,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAC7E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACjC,MAAM,MAAM,GAAU,EAAE,CAAA;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;IACvC,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const doctorCommand: import("citty").CommandDef<{
|
|
2
|
+
verbose: {
|
|
3
|
+
type: "boolean";
|
|
4
|
+
description: string;
|
|
5
|
+
default: false;
|
|
6
|
+
};
|
|
7
|
+
'dashboard-url': {
|
|
8
|
+
type: "string";
|
|
9
|
+
description: string;
|
|
10
|
+
default: string;
|
|
11
|
+
};
|
|
12
|
+
}>;
|
|
13
|
+
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAyDA,eAAO,MAAM,aAAa;;;;;;;;;;;EA6ExB,CAAA"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { spawnSync } from 'node:child_process';
|
|
2
|
+
import { access, readFile } from 'node:fs/promises';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { defineCommand } from 'citty';
|
|
5
|
+
import { AUDEN_HOOK_SCRIPT } from '../auden-paths.js';
|
|
6
|
+
import { readConfigToken, resolveDashboardUrl } from '../config.js';
|
|
7
|
+
import { describeDashboardHealth } from '../dashboard-health.js';
|
|
8
|
+
import { verifyDashboardToken } from '../token-verify.js';
|
|
9
|
+
function detectBunVersion() {
|
|
10
|
+
// When the CLI itself is running under Bun, the version is already available.
|
|
11
|
+
if (typeof process.versions['bun'] !== 'undefined') {
|
|
12
|
+
return { found: true, version: process.versions['bun'] };
|
|
13
|
+
}
|
|
14
|
+
// Otherwise probe for a bun executable on PATH (common case when running under Node).
|
|
15
|
+
const result = spawnSync('bun', ['--version'], { encoding: 'utf8', timeout: 3000 });
|
|
16
|
+
if (result.status === 0 && result.stdout) {
|
|
17
|
+
return { found: true, version: result.stdout.trim() };
|
|
18
|
+
}
|
|
19
|
+
return { found: false, version: 'not found' };
|
|
20
|
+
}
|
|
21
|
+
async function checkHookScriptInstalled() {
|
|
22
|
+
return access(AUDEN_HOOK_SCRIPT)
|
|
23
|
+
.then(() => true)
|
|
24
|
+
.catch(() => false);
|
|
25
|
+
}
|
|
26
|
+
async function checkClaudeCodeHooksConfigured() {
|
|
27
|
+
const settingsPath = join(process.cwd(), '.claude', 'settings.json');
|
|
28
|
+
try {
|
|
29
|
+
const raw = await readFile(settingsPath, 'utf8');
|
|
30
|
+
const settings = JSON.parse(raw);
|
|
31
|
+
const hooks = settings['hooks'];
|
|
32
|
+
const postToolUse = hooks?.['PostToolUse'];
|
|
33
|
+
if (!Array.isArray(postToolUse))
|
|
34
|
+
return false;
|
|
35
|
+
return postToolUse.some((group) => {
|
|
36
|
+
const groupHooks = group['hooks'];
|
|
37
|
+
return (Array.isArray(groupHooks) &&
|
|
38
|
+
groupHooks.some((h) => typeof h === 'object' &&
|
|
39
|
+
h !== null &&
|
|
40
|
+
h['command']
|
|
41
|
+
?.toString()
|
|
42
|
+
.includes('log-action.mjs')));
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
export const doctorCommand = defineCommand({
|
|
50
|
+
meta: {
|
|
51
|
+
name: 'doctor',
|
|
52
|
+
description: 'Check your environment for common setup issues',
|
|
53
|
+
},
|
|
54
|
+
args: {
|
|
55
|
+
verbose: {
|
|
56
|
+
type: 'boolean',
|
|
57
|
+
description: 'Print extra diagnostic output',
|
|
58
|
+
default: false,
|
|
59
|
+
},
|
|
60
|
+
'dashboard-url': {
|
|
61
|
+
type: 'string',
|
|
62
|
+
description: 'Override the dashboard base URL for the connection check (default: ~/.auden/config.json then the baked-in default)',
|
|
63
|
+
default: '',
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
async run({ args }) {
|
|
67
|
+
const bun = detectBunVersion();
|
|
68
|
+
const hookInstalled = await checkHookScriptInstalled();
|
|
69
|
+
const hooksConfigured = await checkClaudeCodeHooksConfigured();
|
|
70
|
+
const checks = [
|
|
71
|
+
{
|
|
72
|
+
label: 'Node version',
|
|
73
|
+
ok: parseInt(process.version.slice(1), 10) >= 20,
|
|
74
|
+
detail: process.version,
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
label: 'Bun available',
|
|
78
|
+
ok: bun.found,
|
|
79
|
+
detail: bun.version,
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
label: 'Hook script installed',
|
|
83
|
+
ok: hookInstalled,
|
|
84
|
+
detail: hookInstalled ? AUDEN_HOOK_SCRIPT : 'not found — run `auden init`',
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
label: 'Claude Code hooks configured',
|
|
88
|
+
ok: hooksConfigured,
|
|
89
|
+
detail: hooksConfigured
|
|
90
|
+
? '.claude/settings.json has PostToolUse hook'
|
|
91
|
+
: 'not configured — run `auden init` in your project',
|
|
92
|
+
},
|
|
93
|
+
];
|
|
94
|
+
let allOk = true;
|
|
95
|
+
for (const check of checks) {
|
|
96
|
+
const icon = check.ok ? '✓' : '✗';
|
|
97
|
+
const line = ` ${icon} ${check.label}`;
|
|
98
|
+
console.log(args.verbose ? `${line} (${check.detail ?? ''})` : line);
|
|
99
|
+
if (!check.ok)
|
|
100
|
+
allOk = false;
|
|
101
|
+
}
|
|
102
|
+
// Informational, never fails the run — the CLI is fully functional
|
|
103
|
+
// locally without a dashboard connection. When a token IS stored, probe
|
|
104
|
+
// the dashboard so a silently-401ing (expired/revoked) token surfaces as a
|
|
105
|
+
// broken connection instead of a misleading "configured" — that gap is the
|
|
106
|
+
// activation-failure signal this check exists to close.
|
|
107
|
+
const token = await readConfigToken().catch(() => '');
|
|
108
|
+
if (!token) {
|
|
109
|
+
console.log(` i ${describeDashboardHealth('unconfigured', '')}`);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
const dashboardUrl = await resolveDashboardUrl(args['dashboard-url']);
|
|
113
|
+
const verification = await verifyDashboardToken(dashboardUrl, token);
|
|
114
|
+
console.log(` i ${describeDashboardHealth(verification, dashboardUrl)}`);
|
|
115
|
+
}
|
|
116
|
+
if (!allOk) {
|
|
117
|
+
console.error('\nSome checks failed. See above for details.');
|
|
118
|
+
process.exit(1);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
console.log('\nAll checks passed.');
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
});
|
|
125
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/eval/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,IAAI,WAAW,EAAE,MAAM,UAAU,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/eval/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,IAAI,WAAW,EAAE,MAAM,UAAU,CAAA"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export declare const evalRunCommand: import("citty").CommandDef<{
|
|
2
|
+
run: {
|
|
3
|
+
type: "string";
|
|
4
|
+
description: string;
|
|
5
|
+
default: string;
|
|
6
|
+
};
|
|
7
|
+
rules: {
|
|
8
|
+
type: "string";
|
|
9
|
+
description: string;
|
|
10
|
+
default: string;
|
|
11
|
+
};
|
|
12
|
+
json: {
|
|
13
|
+
type: "boolean";
|
|
14
|
+
description: string;
|
|
15
|
+
default: false;
|
|
16
|
+
};
|
|
17
|
+
provider: {
|
|
18
|
+
type: "string";
|
|
19
|
+
description: string;
|
|
20
|
+
default: string;
|
|
21
|
+
};
|
|
22
|
+
model: {
|
|
23
|
+
type: "string";
|
|
24
|
+
description: string;
|
|
25
|
+
default: string;
|
|
26
|
+
};
|
|
27
|
+
'api-key': {
|
|
28
|
+
type: "string";
|
|
29
|
+
description: string;
|
|
30
|
+
default: string;
|
|
31
|
+
};
|
|
32
|
+
'base-url': {
|
|
33
|
+
type: "string";
|
|
34
|
+
description: string;
|
|
35
|
+
default: string;
|
|
36
|
+
};
|
|
37
|
+
}>;
|
|
38
|
+
//# sourceMappingURL=run.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/commands/eval/run.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuLzB,CAAA"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { readFile, readdir, stat } from 'node:fs/promises';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { evaluateRun } from '@auden.to/eval-core';
|
|
4
|
+
import { parseActionEntry } from '@auden.to/protocol';
|
|
5
|
+
import { defineCommand } from 'citty';
|
|
6
|
+
import { AUDEN_CONFIG, AUDEN_RUNS_DIR } from '../../auden-paths.js';
|
|
7
|
+
import { resolveDashboardUrl } from '../../config.js';
|
|
8
|
+
import { createEvalAdapter, resolveEvalProviderConfig } from '../../eval-provider.js';
|
|
9
|
+
import { formatSessionSummary } from '../../eval-summary.js';
|
|
10
|
+
export const evalRunCommand = defineCommand({
|
|
11
|
+
meta: {
|
|
12
|
+
name: 'eval',
|
|
13
|
+
description: 'Evaluate the most recent agent run against AGENTS.md rules',
|
|
14
|
+
},
|
|
15
|
+
args: {
|
|
16
|
+
run: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: 'Session ID to evaluate (default: most recent run)',
|
|
19
|
+
default: '',
|
|
20
|
+
},
|
|
21
|
+
rules: {
|
|
22
|
+
type: 'string',
|
|
23
|
+
description: 'Path to rules file',
|
|
24
|
+
default: 'AGENTS.md',
|
|
25
|
+
},
|
|
26
|
+
json: {
|
|
27
|
+
type: 'boolean',
|
|
28
|
+
description: 'Output results as JSON',
|
|
29
|
+
default: false,
|
|
30
|
+
},
|
|
31
|
+
provider: {
|
|
32
|
+
type: 'string',
|
|
33
|
+
description: 'Eval provider override (openrouter, anthropic, openai-compatible, google, ollama)',
|
|
34
|
+
default: '',
|
|
35
|
+
},
|
|
36
|
+
model: {
|
|
37
|
+
type: 'string',
|
|
38
|
+
description: 'Eval model override',
|
|
39
|
+
default: '',
|
|
40
|
+
},
|
|
41
|
+
'api-key': {
|
|
42
|
+
type: 'string',
|
|
43
|
+
description: 'Eval API key override',
|
|
44
|
+
default: '',
|
|
45
|
+
},
|
|
46
|
+
'base-url': {
|
|
47
|
+
type: 'string',
|
|
48
|
+
description: 'Eval base URL override',
|
|
49
|
+
default: '',
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
async run({ args }) {
|
|
53
|
+
// 1. Read rules file
|
|
54
|
+
let rules;
|
|
55
|
+
try {
|
|
56
|
+
rules = await readFile(args.rules, 'utf8');
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
console.error(` Error: rules file not found at ${args.rules}\n` +
|
|
60
|
+
` Run \`auden init\` to create AGENTS.md, or specify --rules <path>`);
|
|
61
|
+
process.exit(1);
|
|
62
|
+
}
|
|
63
|
+
// 2. Find run log
|
|
64
|
+
let runPath;
|
|
65
|
+
if (args.run) {
|
|
66
|
+
runPath = join(AUDEN_RUNS_DIR, `${args.run}.jsonl`);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
// Pick most recent by mtime
|
|
70
|
+
let entries;
|
|
71
|
+
try {
|
|
72
|
+
entries = (await readdir(AUDEN_RUNS_DIR)).filter((f) => f.endsWith('.jsonl'));
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
console.error(` Error: no runs found in ${AUDEN_RUNS_DIR}\n` +
|
|
76
|
+
` Make sure auden init has been run and an agent session has completed.`);
|
|
77
|
+
process.exit(1);
|
|
78
|
+
}
|
|
79
|
+
if (entries.length === 0) {
|
|
80
|
+
console.error(` Error: no run logs found in ${AUDEN_RUNS_DIR}\n` +
|
|
81
|
+
` Start a Claude Code session to record actions, then re-run auden eval.`);
|
|
82
|
+
process.exit(1);
|
|
83
|
+
}
|
|
84
|
+
// Sort by mtime descending, pick newest
|
|
85
|
+
const withStats = await Promise.all(entries.map(async (f) => ({
|
|
86
|
+
f,
|
|
87
|
+
mtime: (await stat(join(AUDEN_RUNS_DIR, f))).mtime,
|
|
88
|
+
})));
|
|
89
|
+
withStats.sort((a, b) => b.mtime.getTime() - a.mtime.getTime());
|
|
90
|
+
runPath = join(AUDEN_RUNS_DIR, withStats[0].f);
|
|
91
|
+
}
|
|
92
|
+
// 3. Parse JSONL
|
|
93
|
+
let rawContent;
|
|
94
|
+
try {
|
|
95
|
+
rawContent = await readFile(runPath, 'utf8');
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
console.error(` Error: run log not found at ${runPath}`);
|
|
99
|
+
process.exit(1);
|
|
100
|
+
}
|
|
101
|
+
const actions = [];
|
|
102
|
+
for (const line of rawContent.split('\n').filter((l) => l.trim())) {
|
|
103
|
+
try {
|
|
104
|
+
actions.push(parseActionEntry(JSON.parse(line)));
|
|
105
|
+
}
|
|
106
|
+
catch (err) {
|
|
107
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
108
|
+
console.warn(` warning: skipping malformed action entry: ${msg}`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (actions.length === 0) {
|
|
112
|
+
console.error(` Error: no valid action entries in ${runPath}`);
|
|
113
|
+
process.exit(1);
|
|
114
|
+
}
|
|
115
|
+
// 4. Resolve provider config
|
|
116
|
+
let rawConfig = {};
|
|
117
|
+
try {
|
|
118
|
+
const raw = await readFile(AUDEN_CONFIG, 'utf8');
|
|
119
|
+
try {
|
|
120
|
+
rawConfig = JSON.parse(raw);
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
124
|
+
console.error(` Error: could not parse ${AUDEN_CONFIG}: ${msg}`);
|
|
125
|
+
process.exit(1);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
catch (err) {
|
|
129
|
+
if (err.code !== 'ENOENT') {
|
|
130
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
131
|
+
console.error(` Error: could not read ${AUDEN_CONFIG}: ${msg}`);
|
|
132
|
+
process.exit(1);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
let providerConfig;
|
|
136
|
+
let adapter;
|
|
137
|
+
try {
|
|
138
|
+
providerConfig = resolveEvalProviderConfig(rawConfig, process.env, {
|
|
139
|
+
provider: args.provider,
|
|
140
|
+
model: args.model,
|
|
141
|
+
apiKey: args['api-key'],
|
|
142
|
+
baseUrl: args['base-url'],
|
|
143
|
+
});
|
|
144
|
+
adapter = createEvalAdapter(providerConfig);
|
|
145
|
+
}
|
|
146
|
+
catch (err) {
|
|
147
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
148
|
+
console.error(msg);
|
|
149
|
+
process.exit(1);
|
|
150
|
+
}
|
|
151
|
+
// 5. Evaluate
|
|
152
|
+
console.log(` Evaluating ${actions.length} actions against rules in ${args.rules} using ${providerConfig.provider}/${providerConfig.model}...`);
|
|
153
|
+
let result;
|
|
154
|
+
try {
|
|
155
|
+
result = await evaluateRun(rules, actions, adapter);
|
|
156
|
+
}
|
|
157
|
+
catch (err) {
|
|
158
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
159
|
+
console.error(` Error during evaluation: ${msg}`);
|
|
160
|
+
process.exit(1);
|
|
161
|
+
}
|
|
162
|
+
// 6. Output
|
|
163
|
+
if (args.json) {
|
|
164
|
+
console.log(JSON.stringify(result, null, 2));
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
// Lead with a concise one-paragraph session summary — this is what the
|
|
168
|
+
// Claude Code Stop hook surfaces at session end. The dashboard is where you
|
|
169
|
+
// go deeper; resolveDashboardUrl always yields an origin (config or default).
|
|
170
|
+
const dashboardUrl = await resolveDashboardUrl();
|
|
171
|
+
console.log(`\n${formatSessionSummary(result, { dashboardUrl })}\n`);
|
|
172
|
+
for (const verdict of result.verdicts) {
|
|
173
|
+
const icon = verdict.verdict === 'aligned' ? '✓' : verdict.verdict === 'misaligned' ? '✗' : '–';
|
|
174
|
+
console.log(`${icon} [${verdict.verdict}] ${verdict.rule}`);
|
|
175
|
+
console.log(` ${verdict.reasoning}`);
|
|
176
|
+
}
|
|
177
|
+
},
|
|
178
|
+
});
|
|
179
|
+
//# sourceMappingURL=run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/commands/eval/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"active.d.ts","sourceRoot":"","sources":["../../../src/commands/guides/active.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,mBAAmB,gCAoC9B,CAAA"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { parseGuideBundleResponse } from '@auden.to/protocol';
|
|
3
|
+
import { defineCommand } from 'citty';
|
|
4
|
+
import { AUDEN_GUIDES_FILE } from '../../auden-paths.js';
|
|
5
|
+
export const guidesActiveCommand = defineCommand({
|
|
6
|
+
meta: {
|
|
7
|
+
name: 'active',
|
|
8
|
+
description: 'List active guides for the current project',
|
|
9
|
+
},
|
|
10
|
+
args: {},
|
|
11
|
+
async run() {
|
|
12
|
+
let bundle;
|
|
13
|
+
try {
|
|
14
|
+
const raw = await readFile(AUDEN_GUIDES_FILE, 'utf8');
|
|
15
|
+
bundle = parseGuideBundleResponse(JSON.parse(raw));
|
|
16
|
+
}
|
|
17
|
+
catch (err) {
|
|
18
|
+
if (err.code === 'ENOENT') {
|
|
19
|
+
console.log(' No guides cache found. Run "auden sync" to pull the latest guides.');
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
console.log(' Guides cache is unreadable — run "auden sync" to refresh.');
|
|
23
|
+
}
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const active = bundle.guides.filter((g) => g.enabled);
|
|
27
|
+
if (active.length === 0) {
|
|
28
|
+
console.log(' No active guides. Run "auden sync" to pull the latest guides.');
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
console.log(`Active guides (${active.length}):`);
|
|
32
|
+
for (const guide of active) {
|
|
33
|
+
console.log(`\n [${guide.title}]`);
|
|
34
|
+
console.log(` ${guide.content}`);
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
//# sourceMappingURL=active.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"active.js","sourceRoot":"","sources":["../../../src/commands/guides/active.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAErC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAExD,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAC;IAC/C,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,4CAA4C;KAC1D;IACD,IAAI,EAAE,EAAE;IACR,KAAK,CAAC,GAAG;QACP,IAAI,MAAmD,CAAA;QACvD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAA;YACrD,MAAM,GAAG,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;QACpD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACrD,OAAO,CAAC,GAAG,CACT,sEAAsE,CACvE,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAA;YAC5E,CAAC;YACD,OAAM;QACR,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CACjC,CAAC,CAAuD,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CACvE,CAAA;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAA;YAC9E,OAAM;QACR,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,MAAM,IAAI,CAAC,CAAA;QAChD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,KAAK,GAAG,CAAC,CAAA;YACnC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;QACnC,CAAC;IACH,CAAC;CACF,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/guides/index.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,qDAUxB,CAAA"}
|