@aiiware/aii 0.16.38 → 0.17.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.
Files changed (3) hide show
  1. package/README.md +47 -0
  2. package/bin/aii +669 -636
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -417,7 +417,9 @@ aii sessions info <id> # View stats (tokens, cost, tools)
417
417
 
418
418
  ```bash
419
419
  aii config init # Interactive setup wizard
420
+ aii config init --project # Scaffold project config for this repo
420
421
  aii config show # Current settings
422
+ aii config show --sources # Per-key provenance (env/local/project/global)
421
423
  aii config validate # Check config + API key validity
422
424
  aii config set <key> <value> # Set a specific value
423
425
  aii config provider [name] # Show or switch provider
@@ -450,6 +452,51 @@ sessions:
450
452
 
451
453
  Environment variables also work: `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, `DEEPSEEK_API_KEY`, etc.
452
454
 
455
+ ### Project configuration (v0.17)
456
+
457
+ A repository can carry its own Aii config — committed for the team, layered under your personal settings:
458
+
459
+ ```bash
460
+ aii config init --project # creates .aii/settings.json, gitignores .aii/settings.local.json
461
+ ```
462
+
463
+ ```jsonc
464
+ // .aii/settings.json (committed)
465
+ {
466
+ "llm": { "model": "deepseek-v4", "provider": "deepseek" },
467
+ "output_modes": { "default": "clean" },
468
+ "permissions": {
469
+ "deny_write": ["db/migrations/**"], // paths the agent may never write in this repo
470
+ "deny_tools": ["Bash"] // tools the agent may never use in this repo
471
+ }
472
+ }
473
+ ```
474
+
475
+ Precedence: `flag > env > .aii/settings.local.json > .aii/settings.json > ~/.aii/config.yaml > defaults` — your env pins always win. `aii config show --sources` shows exactly where each effective value came from.
476
+
477
+ **A repo can only narrow, never widen.** Only safe keys are accepted (model, provider, temperature, output mode, persona, theme, deny rules); anything that would widen authority — `api.*`, `allow_write`, auto-approve flags — is rejected with a warning. Deny rules are enforced everywhere (file tools, Bash write targets, subagents) as hard tool errors. Project values are session-effective only: `aii config set` still writes exclusively to your `~/.aii/config.yaml`.
478
+
479
+ A repo's `.aii/hooks.json` never runs silently: the first interactive session shows each hook's event + command and asks for approval, remembered in `~/.aii/project-trust.json` until the file changes. Headless runs fail closed. Skip the whole project layer for one session with `aii --no-project-config`.
480
+
481
+ ### Project slash commands (v0.17.1)
482
+
483
+ A repository can ship its own slash commands — one markdown file per command under `.aii/commands/`, committed and shared with the team:
484
+
485
+ ```markdown
486
+ <!-- .aii/commands/deploy.md -->
487
+ ---
488
+ description: Deploy the current branch to staging
489
+ argument-hint: <environment>
490
+ ---
491
+ Deploy the current branch to $ARGUMENTS:
492
+ 1. Run the test suite; abort on failure.
493
+ 2. Build and push the image tagged with the short sha.
494
+ ```
495
+
496
+ Typing `/deploy staging` expands the file's body (with `$ARGUMENTS` → `staging`) into the agent turn. The filename is the command name; frontmatter is optional (`description` and `argument-hint` are shown in the `/` menu and `/help`, where project commands carry a `[project]` badge).
497
+
498
+ **First use asks once.** A cloned repo's command is prompt content the agent will follow with your tools — so the first `/deploy` shows the file's full body and asks. Approve and it's remembered (per file content, in `~/.aii/project-trust.json`) until the file changes; decline and it's skipped. Headless runs fail closed. The same gate now also covers project `.aii/skills/` — repo-committed skills ask before they first run, and an unapproved one is never model-auto-invoked. Project commands are typed-slash only (never triggered by plain English), and `aii --no-project-config` disables commands and skills along with the rest of the project layer.
499
+
453
500
  ---
454
501
 
455
502
  ## CLI Reference