@tekmidian/pai 0.11.0 → 0.12.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 +84 -10
- package/dist/{auto-route-D54Kv7yI.mjs → auto-route-CLYcToZ5.mjs} +4 -4
- package/dist/{auto-route-D54Kv7yI.mjs.map → auto-route-CLYcToZ5.mjs.map} +1 -1
- package/dist/cli/index.mjs +20 -10275
- package/dist/cli/index.mjs.map +1 -1
- package/dist/cli/program.d.mts +11 -0
- package/dist/cli/program.d.mts.map +1 -0
- package/dist/cli/program.mjs +249 -0
- package/dist/cli/program.mjs.map +1 -0
- package/dist/{clusters-BwmdKB-V.mjs → clusters-BYPw7vfW.mjs} +2 -2
- package/dist/{clusters-BwmdKB-V.mjs.map → clusters-BYPw7vfW.mjs.map} +1 -1
- package/dist/{config-DqBY3aT0.mjs → config-BuhHWyOK.mjs} +1 -1
- package/dist/{config-DqBY3aT0.mjs.map → config-BuhHWyOK.mjs.map} +1 -1
- package/dist/daemon/index.mjs +16 -18
- package/dist/daemon/index.mjs.map +1 -1
- package/dist/{daemon-CSKj8Xm9.mjs → daemon-BldK8-57.mjs} +197 -43
- package/dist/daemon-BldK8-57.mjs.map +1 -0
- package/dist/daemon-mcp/index.mjs +2 -2
- package/dist/{db-CYmBWcjh.mjs → db-CmYbAVCD.mjs} +1 -1
- package/dist/{db-CYmBWcjh.mjs.map → db-CmYbAVCD.mjs.map} +1 -1
- package/dist/{detect-CdaA48EI.mjs → detect-KjycLtXM.mjs} +1 -1
- package/dist/{detect-CdaA48EI.mjs.map → detect-KjycLtXM.mjs.map} +1 -1
- package/dist/{detector-Q_lVXtj-.mjs → detector-ZiOhHszd.mjs} +2 -2
- package/dist/{detector-Q_lVXtj-.mjs.map → detector-ZiOhHszd.mjs.map} +1 -1
- package/dist/{embeddings-DGRAPAYb.mjs → embeddings-BJPOcbik.mjs} +1 -1
- package/dist/{embeddings-DGRAPAYb.mjs.map → embeddings-BJPOcbik.mjs.map} +1 -1
- package/dist/factory-Q88X1bAN.mjs +69 -0
- package/dist/factory-Q88X1bAN.mjs.map +1 -0
- package/dist/{helpers-crDEr6S2.mjs → helpers-IjZkXBhj.mjs} +1 -1
- package/dist/{helpers-crDEr6S2.mjs.map → helpers-IjZkXBhj.mjs.map} +1 -1
- package/dist/hooks/observe.mjs +21 -0
- package/dist/hooks/observe.mjs.map +2 -2
- package/dist/index.mjs +9 -10
- package/dist/{indexer-backend-DcYThufd.mjs → indexer-backend-Cm5RS7y0.mjs} +3 -3
- package/dist/{indexer-backend-DcYThufd.mjs.map → indexer-backend-Cm5RS7y0.mjs.map} +1 -1
- package/dist/{ipc-client-C3pjwy2m.mjs → ipc-client-CoyUHPod.mjs} +1 -1
- package/dist/{ipc-client-C3pjwy2m.mjs.map → ipc-client-CoyUHPod.mjs.map} +1 -1
- package/dist/{kg-entity-DVzTsy6G.mjs → kg-entity-LXblD7LZ.mjs} +1 -1
- package/dist/{kg-entity-DVzTsy6G.mjs.map → kg-entity-LXblD7LZ.mjs.map} +1 -1
- package/dist/{kg-extraction-iR1BKKWK.mjs → kg-extraction-C8DEUHTS.mjs} +17 -6
- package/dist/kg-extraction-C8DEUHTS.mjs.map +1 -0
- package/dist/{latent-ideas-dWVuI_dg.mjs → latent-ideas-RyC6eyqI.mjs} +4 -4
- package/dist/{latent-ideas-dWVuI_dg.mjs.map → latent-ideas-RyC6eyqI.mjs.map} +1 -1
- package/dist/main-resolver-uFxNiDy7.mjs +1339 -0
- package/dist/main-resolver-uFxNiDy7.mjs.map +1 -0
- package/dist/{migrate-fLD6rAdO.mjs → migrate-B02wDDgS.mjs} +2 -2
- package/dist/{migrate-fLD6rAdO.mjs.map → migrate-B02wDDgS.mjs.map} +1 -1
- package/dist/{neighborhood-DixmpfPT.mjs → neighborhood-CklGIB8r.mjs} +2 -2
- package/dist/{neighborhood-DixmpfPT.mjs.map → neighborhood-CklGIB8r.mjs.map} +1 -1
- package/dist/{note-context-BY7rfGdl.mjs → note-context-qvZlVXVO.mjs} +1 -1
- package/dist/{note-context-BY7rfGdl.mjs.map → note-context-qvZlVXVO.mjs.map} +1 -1
- package/dist/{pai-marker-CXQPX2P6.mjs → pai-marker-HVBwwBW-.mjs} +1 -1
- package/dist/{pai-marker-CXQPX2P6.mjs.map → pai-marker-HVBwwBW-.mjs.map} +1 -1
- package/dist/pick-7Kg9DX7S.mjs +8250 -0
- package/dist/pick-7Kg9DX7S.mjs.map +1 -0
- package/dist/{postgres-Cp25xZes.mjs → postgres-B451Hnkm.mjs} +2 -2
- package/dist/{postgres-Cp25xZes.mjs.map → postgres-B451Hnkm.mjs.map} +1 -1
- package/dist/{query-feedback-C0hKUHVz.mjs → query-feedback-fapbqRgh.mjs} +1 -1
- package/dist/{query-feedback-C0hKUHVz.mjs.map → query-feedback-fapbqRgh.mjs.map} +1 -1
- package/dist/{reranker-CMNZcfVx.mjs → reranker-C08R99zn.mjs} +1 -1
- package/dist/{reranker-CMNZcfVx.mjs.map → reranker-C08R99zn.mjs.map} +1 -1
- package/dist/{search-i2nlQ-JM.mjs → search-HcdKtMla.mjs} +3 -3
- package/dist/{search-i2nlQ-JM.mjs.map → search-HcdKtMla.mjs.map} +1 -1
- package/dist/{sqlite-B3JHfJc2.mjs → sqlite-DQpY1Esi.mjs} +3 -3
- package/dist/{sqlite-B3JHfJc2.mjs.map → sqlite-DQpY1Esi.mjs.map} +1 -1
- package/dist/{state-BHZAhLou.mjs → state-BIlxNRUn.mjs} +1 -1
- package/dist/{state-BHZAhLou.mjs.map → state-BIlxNRUn.mjs.map} +1 -1
- package/dist/{stop-words-BaMEGVeY.mjs → stop-words-BwplsQ3z.mjs} +1 -1
- package/dist/{stop-words-BaMEGVeY.mjs.map → stop-words-BwplsQ3z.mjs.map} +1 -1
- package/dist/{sync-CmBKOL3K.mjs → sync-uPR4g438.mjs} +205 -6
- package/dist/sync-uPR4g438.mjs.map +1 -0
- package/dist/{themes-DO8mUVwD.mjs → themes-Cg8oG9Ra.mjs} +3 -3
- package/dist/{themes-DO8mUVwD.mjs.map → themes-Cg8oG9Ra.mjs.map} +1 -1
- package/dist/{tools-C1JNgya7.mjs → tools-Op3C2Nm6.mjs} +26 -26
- package/dist/{tools-C1JNgya7.mjs.map → tools-Op3C2Nm6.mjs.map} +1 -1
- package/dist/{trace-TYCLMCkY.mjs → trace-CLK-NPkb.mjs} +1 -1
- package/dist/{trace-TYCLMCkY.mjs.map → trace-CLK-NPkb.mjs.map} +1 -1
- package/dist/{utils-BAxjW3j8.mjs → utils-CqqgB0dH.mjs} +1 -1
- package/dist/{utils-BAxjW3j8.mjs.map → utils-CqqgB0dH.mjs.map} +1 -1
- package/dist/{vault-indexer-vNnL3Azb.mjs → vault-indexer-Dn_BccVK.mjs} +2 -2
- package/dist/{vault-indexer-vNnL3Azb.mjs.map → vault-indexer-Dn_BccVK.mjs.map} +1 -1
- package/dist/{work-queue-worker-BxsBtz6j.mjs → work-queue-worker-DHOIVVQ7.mjs} +5 -5
- package/dist/{work-queue-worker-BxsBtz6j.mjs.map → work-queue-worker-DHOIVVQ7.mjs.map} +1 -1
- package/dist/{zettelkasten-B-94vghH.mjs → zettelkasten-NwBD1NsT.mjs} +4 -4
- package/dist/{zettelkasten-B-94vghH.mjs.map → zettelkasten-NwBD1NsT.mjs.map} +1 -1
- package/docs/commands/README.md +151 -0
- package/docs/commands/_examples/kg.md +13 -0
- package/docs/commands/_examples/memory.md +13 -0
- package/docs/commands/_examples/observation.md +13 -0
- package/docs/commands/_examples/projects.md +16 -0
- package/docs/commands/_examples/skill.md +13 -0
- package/docs/commands/_examples/zettel.md +13 -0
- package/docs/commands/backup.md +24 -0
- package/docs/commands/clear-names.md +27 -0
- package/docs/commands/daemon.md +78 -0
- package/docs/commands/db.md +74 -0
- package/docs/commands/end.md +24 -0
- package/docs/commands/help.md +30 -0
- package/docs/commands/kg.md +89 -0
- package/docs/commands/mcp.md +35 -0
- package/docs/commands/memory.md +125 -0
- package/docs/commands/notify.md +83 -0
- package/docs/commands/observation.md +80 -0
- package/docs/commands/obsidian.md +60 -0
- package/docs/commands/pause.md +35 -0
- package/docs/commands/project.md +345 -0
- package/docs/commands/projects.md +364 -0
- package/docs/commands/registry.md +68 -0
- package/docs/commands/restore.md +31 -0
- package/docs/commands/sessions.md +25 -0
- package/docs/commands/setup.md +20 -0
- package/docs/commands/shell-init.md +18 -0
- package/docs/commands/skill.md +54 -0
- package/docs/commands/topic.md +46 -0
- package/docs/commands/update.md +18 -0
- package/docs/commands/zettel.md +151 -0
- package/docs/mcp-skill-guide.md +292 -0
- package/package.json +4 -2
- package/scripts/build-docs.mjs +371 -0
- package/src/hooks/ts/post-tool-use/observe.ts +43 -0
- package/dist/daemon-CSKj8Xm9.mjs.map +0 -1
- package/dist/db-BtuN768f.mjs +0 -206
- package/dist/db-BtuN768f.mjs.map +0 -1
- package/dist/factory-BufouUQ1.mjs +0 -44
- package/dist/factory-BufouUQ1.mjs.map +0 -1
- package/dist/indexer-D7MvSQPY.mjs +0 -1
- package/dist/kg-extraction-iR1BKKWK.mjs.map +0 -1
- package/dist/sync-CmBKOL3K.mjs.map +0 -1
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
<!-- GENERATED by scripts/build-docs.mjs from the live Commander tree (src/cli/program.ts). Do not edit by hand. -->
|
|
2
|
+
|
|
3
|
+
# pai observation
|
|
4
|
+
|
|
5
|
+
> Observation capture: list, search, and stats
|
|
6
|
+
|
|
7
|
+
## Synopsis
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
pai observation <subcommand> [options]
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Subcommands
|
|
14
|
+
|
|
15
|
+
| Command | Description |
|
|
16
|
+
|---------|-------------|
|
|
17
|
+
| [`pai observation list`](#pai-observation-list) | List recent observations |
|
|
18
|
+
| [`pai observation search <query>`](#pai-observation-search-query) | Search observations by title or narrative text |
|
|
19
|
+
| [`pai observation stats`](#pai-observation-stats) | Show observation statistics: totals, by type, by project |
|
|
20
|
+
|
|
21
|
+
### pai observation list
|
|
22
|
+
|
|
23
|
+
List recent observations
|
|
24
|
+
|
|
25
|
+
**Options**
|
|
26
|
+
|
|
27
|
+
| Option | Description | Default |
|
|
28
|
+
|--------|-------------|---------|
|
|
29
|
+
| `--project <slug>` | Filter by project slug | |
|
|
30
|
+
| `--type <type>` | Filter by type (decision, bugfix, feature, refactor, discovery, change) | |
|
|
31
|
+
| `--session <id>` | Filter by session ID | |
|
|
32
|
+
| `--limit <n>` | Maximum results | `20` |
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
### pai observation search <query>
|
|
36
|
+
|
|
37
|
+
Search observations by title or narrative text
|
|
38
|
+
|
|
39
|
+
**Arguments**
|
|
40
|
+
|
|
41
|
+
| Argument | Kind |
|
|
42
|
+
|----------|------|
|
|
43
|
+
| `<query>` | required |
|
|
44
|
+
|
|
45
|
+
**Options**
|
|
46
|
+
|
|
47
|
+
| Option | Description | Default |
|
|
48
|
+
|--------|-------------|---------|
|
|
49
|
+
| `--project <slug>` | Filter by project slug | |
|
|
50
|
+
| `--type <type>` | Filter by type | |
|
|
51
|
+
| `--limit <n>` | Maximum results | `20` |
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
### pai observation stats
|
|
55
|
+
|
|
56
|
+
Show observation statistics: totals, by type, by project
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
## Examples
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
# Recent classified tool-call observations
|
|
63
|
+
pai observation list
|
|
64
|
+
|
|
65
|
+
# Only this project's decisions
|
|
66
|
+
pai observation list --project pai --type decision
|
|
67
|
+
|
|
68
|
+
# Search observations by text
|
|
69
|
+
pai observation search "daemon socket"
|
|
70
|
+
|
|
71
|
+
# Totals, by type, by project
|
|
72
|
+
pai observation stats
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## See also
|
|
76
|
+
|
|
77
|
+
[`pai backup`](backup.md) · [`pai clear-names`](clear-names.md) · [`pai daemon`](daemon.md) · [`pai db`](db.md) · [`pai end`](end.md) · [`pai help`](help.md) · [`pai kg`](kg.md) · [`pai mcp`](mcp.md) · [`pai memory`](memory.md) · [`pai notify`](notify.md) · [`pai obsidian`](obsidian.md) · [`pai pause`](pause.md) · [`pai project`](project.md) · [`pai projects`](projects.md) · [`pai registry`](registry.md) · [`pai restore`](restore.md) · [`pai sessions`](sessions.md) · [`pai setup`](setup.md) · [`pai shell-init`](shell-init.md) · [`pai skill`](skill.md) · [`pai topic`](topic.md) · [`pai update`](update.md) · [`pai zettel`](zettel.md)
|
|
78
|
+
|
|
79
|
+
Run `pai help <area>` to read any of these in the terminal.
|
|
80
|
+
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
<!-- GENERATED by scripts/build-docs.mjs from the live Commander tree (src/cli/program.ts). Do not edit by hand. -->
|
|
2
|
+
|
|
3
|
+
# pai obsidian
|
|
4
|
+
|
|
5
|
+
> Obsidian vault: sync project notes, view status, open in Obsidian
|
|
6
|
+
|
|
7
|
+
## Synopsis
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
pai obsidian <subcommand> [options]
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Subcommands
|
|
14
|
+
|
|
15
|
+
| Command | Description |
|
|
16
|
+
|---------|-------------|
|
|
17
|
+
| [`pai obsidian sync`](#pai-obsidian-sync) | Sync project Notes/ dirs into vault, generate _index.md and topic pages |
|
|
18
|
+
| [`pai obsidian status`](#pai-obsidian-status) | Show vault health: healthy, broken, orphaned, and missing symlinks |
|
|
19
|
+
| [`pai obsidian open`](#pai-obsidian-open) | Open the vault in Obsidian (macOS) |
|
|
20
|
+
|
|
21
|
+
### pai obsidian sync
|
|
22
|
+
|
|
23
|
+
Sync project Notes/ dirs into vault, generate _index.md and topic pages
|
|
24
|
+
|
|
25
|
+
**Options**
|
|
26
|
+
|
|
27
|
+
| Option | Description | Default |
|
|
28
|
+
|--------|-------------|---------|
|
|
29
|
+
| `--vault <path>` | Override vault path (default: ~/.pai/obsidian-vault) | |
|
|
30
|
+
| `--quiet` | Minimal output — suitable for cron/hook use | |
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
### pai obsidian status
|
|
34
|
+
|
|
35
|
+
Show vault health: healthy, broken, orphaned, and missing symlinks
|
|
36
|
+
|
|
37
|
+
**Options**
|
|
38
|
+
|
|
39
|
+
| Option | Description | Default |
|
|
40
|
+
|--------|-------------|---------|
|
|
41
|
+
| `--vault <path>` | Override vault path | |
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
### pai obsidian open
|
|
45
|
+
|
|
46
|
+
Open the vault in Obsidian (macOS)
|
|
47
|
+
|
|
48
|
+
**Options**
|
|
49
|
+
|
|
50
|
+
| Option | Description | Default |
|
|
51
|
+
|--------|-------------|---------|
|
|
52
|
+
| `--vault <path>` | Override vault path | |
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
## See also
|
|
56
|
+
|
|
57
|
+
[`pai backup`](backup.md) · [`pai clear-names`](clear-names.md) · [`pai daemon`](daemon.md) · [`pai db`](db.md) · [`pai end`](end.md) · [`pai help`](help.md) · [`pai kg`](kg.md) · [`pai mcp`](mcp.md) · [`pai memory`](memory.md) · [`pai notify`](notify.md) · [`pai observation`](observation.md) · [`pai pause`](pause.md) · [`pai project`](project.md) · [`pai projects`](projects.md) · [`pai registry`](registry.md) · [`pai restore`](restore.md) · [`pai sessions`](sessions.md) · [`pai setup`](setup.md) · [`pai shell-init`](shell-init.md) · [`pai skill`](skill.md) · [`pai topic`](topic.md) · [`pai update`](update.md) · [`pai zettel`](zettel.md)
|
|
58
|
+
|
|
59
|
+
Run `pai help <area>` to read any of these in the terminal.
|
|
60
|
+
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<!-- GENERATED by scripts/build-docs.mjs from the live Commander tree (src/cli/program.ts). Do not edit by hand. -->
|
|
2
|
+
|
|
3
|
+
# pai pause
|
|
4
|
+
|
|
5
|
+
> Save state and display safe-exit instructions for the current session.
|
|
6
|
+
|
|
7
|
+
Writes a ## Continue checkpoint to the project's TODO.md.
|
|
8
|
+
Use `pai pause all` to pause every live session via AIBroker.
|
|
9
|
+
|
|
10
|
+
## Synopsis
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
pai pause [target] [options]
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Arguments
|
|
17
|
+
|
|
18
|
+
| Argument | Kind |
|
|
19
|
+
|----------|------|
|
|
20
|
+
| `[target]` | optional |
|
|
21
|
+
|
|
22
|
+
## Options
|
|
23
|
+
|
|
24
|
+
| Option | Description | Default |
|
|
25
|
+
|--------|-------------|---------|
|
|
26
|
+
| `--dry-run` | Preview changes without writing them | |
|
|
27
|
+
| `--exit` | (pause all only) Also send /exit to each session after pausing | |
|
|
28
|
+
| `--wait <ms>` | (pause all only) Milliseconds to wait before /exit (default: 5000) | `5000` |
|
|
29
|
+
|
|
30
|
+
## See also
|
|
31
|
+
|
|
32
|
+
[`pai backup`](backup.md) · [`pai clear-names`](clear-names.md) · [`pai daemon`](daemon.md) · [`pai db`](db.md) · [`pai end`](end.md) · [`pai help`](help.md) · [`pai kg`](kg.md) · [`pai mcp`](mcp.md) · [`pai memory`](memory.md) · [`pai notify`](notify.md) · [`pai observation`](observation.md) · [`pai obsidian`](obsidian.md) · [`pai project`](project.md) · [`pai projects`](projects.md) · [`pai registry`](registry.md) · [`pai restore`](restore.md) · [`pai sessions`](sessions.md) · [`pai setup`](setup.md) · [`pai shell-init`](shell-init.md) · [`pai skill`](skill.md) · [`pai topic`](topic.md) · [`pai update`](update.md) · [`pai zettel`](zettel.md)
|
|
33
|
+
|
|
34
|
+
Run `pai help <area>` to read any of these in the terminal.
|
|
35
|
+
|
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
<!-- GENERATED by scripts/build-docs.mjs from the live Commander tree (src/cli/program.ts). Do not edit by hand. -->
|
|
2
|
+
|
|
3
|
+
# pai project
|
|
4
|
+
|
|
5
|
+
> Alias for `pai projects`
|
|
6
|
+
|
|
7
|
+
## Synopsis
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
pai project <subcommand> [options]
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Subcommands
|
|
14
|
+
|
|
15
|
+
| Command | Description |
|
|
16
|
+
|---------|-------------|
|
|
17
|
+
| [`pai project list`](#pai-project-list) | Show the unified deduped listing (same as `pai`). |
|
|
18
|
+
| [`pai project list-raw`](#pai-project-list-raw) | Raw registry listing with slug, path, status, last_active columns |
|
|
19
|
+
| [`pai project cd <identifier>`](#pai-project-cd-identifier) | cd to a project directory. Short form: pai cd <name> |
|
|
20
|
+
| [`pai project add <path>`](#pai-project-add-path) | Register a project directory in the PAI registry |
|
|
21
|
+
| [`pai project info <slug>`](#pai-project-info-slug) | Show full details for a project |
|
|
22
|
+
| [`pai project archive <slug>`](#pai-project-archive-slug) | Archive a project |
|
|
23
|
+
| [`pai project unarchive <slug>`](#pai-project-unarchive-slug) | Restore an archived project to active status |
|
|
24
|
+
| [`pai project move <slug> <new-path>`](#pai-project-move-slug-new-path) | Update the root path for a project |
|
|
25
|
+
| [`pai project rebind <slug> <new-path>`](#pai-project-rebind-slug-new-path) | Manually update the root_path for a project (for when auto-detect found multiple matches). |
|
|
26
|
+
| [`pai project tag <slug> <tags...>`](#pai-project-tag-slug-tags) | Add one or more tags to a project |
|
|
27
|
+
| [`pai project alias <slug> <alias>`](#pai-project-alias-slug-alias) | Register an alternative slug for a project |
|
|
28
|
+
| [`pai project edit <slug>`](#pai-project-edit-slug) | Edit project metadata |
|
|
29
|
+
| [`pai project detect [path]`](#pai-project-detect-path) | Detect which registered project the given path (or CWD) belongs to |
|
|
30
|
+
| [`pai project health`](#pai-project-health) | Audit all registered projects: check which paths still exist, find moved/dead projects |
|
|
31
|
+
| [`pai project consolidate <identifier>`](#pai-project-consolidate-identifier) | Consolidate scattered ~/.claude/projects/.../Notes/ directories for a project into its canonical Notes/ location |
|
|
32
|
+
| [`pai project promote`](#pai-project-promote) | Promote a session note into a new standalone project |
|
|
33
|
+
| [`pai project go <query>`](#pai-project-go-query) | Print the root path for a project by slug, partial name, or fuzzy match. |
|
|
34
|
+
| [`pai project name <identifier> <shortname>`](#pai-project-name-identifier-shortname) | Give a project a short name for quick access |
|
|
35
|
+
| [`pai project unname <shortname>`](#pai-project-unname-shortname) | Remove a project's short name |
|
|
36
|
+
| [`pai project names`](#pai-project-names) | List named projects (your curated shortlist) |
|
|
37
|
+
| [`pai project config [identifier]`](#pai-project-config-identifier) | View or modify session launch config for a project. |
|
|
38
|
+
|
|
39
|
+
### pai project list
|
|
40
|
+
|
|
41
|
+
Show the unified deduped listing (same as `pai`).
|
|
42
|
+
|
|
43
|
+
Use --all to include cold / zero-session / archived projects.
|
|
44
|
+
|
|
45
|
+
**Options**
|
|
46
|
+
|
|
47
|
+
| Option | Description | Default |
|
|
48
|
+
|--------|-------------|---------|
|
|
49
|
+
| `--all` | Show all entries including cold / zero-session / archived projects | |
|
|
50
|
+
| `-n, --n <count>` | Max rows to show | `20` |
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
### pai project list-raw
|
|
54
|
+
|
|
55
|
+
Raw registry listing with slug, path, status, last_active columns
|
|
56
|
+
|
|
57
|
+
**Options**
|
|
58
|
+
|
|
59
|
+
| Option | Description | Default |
|
|
60
|
+
|--------|-------------|---------|
|
|
61
|
+
| `--all` | Include archived projects (default: active only) | |
|
|
62
|
+
| `--status <status>` | Filter by status: active \| archived | |
|
|
63
|
+
| `--tag <tag>` | Filter by tag | |
|
|
64
|
+
| `--type <type>` | Filter by type | |
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
### pai project cd <identifier>
|
|
68
|
+
|
|
69
|
+
cd to a project directory. Short form: pai cd <name>
|
|
70
|
+
|
|
71
|
+
(The shell wrapper handles the actual cd; pure output here.)
|
|
72
|
+
Auto-detects moved projects when the registered path no longer exists.
|
|
73
|
+
|
|
74
|
+
**Arguments**
|
|
75
|
+
|
|
76
|
+
| Argument | Kind |
|
|
77
|
+
|----------|------|
|
|
78
|
+
| `<identifier>` | required |
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
### pai project add <path>
|
|
82
|
+
|
|
83
|
+
Register a project directory in the PAI registry
|
|
84
|
+
|
|
85
|
+
**Arguments**
|
|
86
|
+
|
|
87
|
+
| Argument | Kind |
|
|
88
|
+
|----------|------|
|
|
89
|
+
| `<path>` | required |
|
|
90
|
+
|
|
91
|
+
**Options**
|
|
92
|
+
|
|
93
|
+
| Option | Description | Default |
|
|
94
|
+
|--------|-------------|---------|
|
|
95
|
+
| `--slug <slug>` | Override auto-generated slug | |
|
|
96
|
+
| `--type <type>` | Project type: local \| central \| obsidian-linked \| external | `local` |
|
|
97
|
+
| `--display-name <name>` | Human-readable display name | |
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
### pai project info <slug>
|
|
101
|
+
|
|
102
|
+
Show full details for a project
|
|
103
|
+
|
|
104
|
+
**Arguments**
|
|
105
|
+
|
|
106
|
+
| Argument | Kind |
|
|
107
|
+
|----------|------|
|
|
108
|
+
| `<slug>` | required |
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
### pai project archive <slug>
|
|
112
|
+
|
|
113
|
+
Archive a project
|
|
114
|
+
|
|
115
|
+
**Arguments**
|
|
116
|
+
|
|
117
|
+
| Argument | Kind |
|
|
118
|
+
|----------|------|
|
|
119
|
+
| `<slug>` | required |
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
### pai project unarchive <slug>
|
|
123
|
+
|
|
124
|
+
Restore an archived project to active status
|
|
125
|
+
|
|
126
|
+
**Arguments**
|
|
127
|
+
|
|
128
|
+
| Argument | Kind |
|
|
129
|
+
|----------|------|
|
|
130
|
+
| `<slug>` | required |
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
### pai project move <slug> <new-path>
|
|
134
|
+
|
|
135
|
+
Update the root path for a project
|
|
136
|
+
|
|
137
|
+
**Arguments**
|
|
138
|
+
|
|
139
|
+
| Argument | Kind |
|
|
140
|
+
|----------|------|
|
|
141
|
+
| `<slug>` | required |
|
|
142
|
+
| `<new-path>` | required |
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
### pai project rebind <slug> <new-path>
|
|
146
|
+
|
|
147
|
+
Manually update the root_path for a project (for when auto-detect found multiple matches).
|
|
148
|
+
|
|
149
|
+
Validates the new path exists and is a directory, then updates the registry.
|
|
150
|
+
|
|
151
|
+
**Arguments**
|
|
152
|
+
|
|
153
|
+
| Argument | Kind |
|
|
154
|
+
|----------|------|
|
|
155
|
+
| `<slug>` | required |
|
|
156
|
+
| `<new-path>` | required |
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
### pai project tag <slug> <tags...>
|
|
160
|
+
|
|
161
|
+
Add one or more tags to a project
|
|
162
|
+
|
|
163
|
+
**Arguments**
|
|
164
|
+
|
|
165
|
+
| Argument | Kind |
|
|
166
|
+
|----------|------|
|
|
167
|
+
| `<slug>` | required |
|
|
168
|
+
| `<tags...>` | variadic |
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
### pai project alias <slug> <alias>
|
|
172
|
+
|
|
173
|
+
Register an alternative slug for a project
|
|
174
|
+
|
|
175
|
+
**Arguments**
|
|
176
|
+
|
|
177
|
+
| Argument | Kind |
|
|
178
|
+
|----------|------|
|
|
179
|
+
| `<slug>` | required |
|
|
180
|
+
| `<alias>` | required |
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
### pai project edit <slug>
|
|
184
|
+
|
|
185
|
+
Edit project metadata
|
|
186
|
+
|
|
187
|
+
**Arguments**
|
|
188
|
+
|
|
189
|
+
| Argument | Kind |
|
|
190
|
+
|----------|------|
|
|
191
|
+
| `<slug>` | required |
|
|
192
|
+
|
|
193
|
+
**Options**
|
|
194
|
+
|
|
195
|
+
| Option | Description | Default |
|
|
196
|
+
|--------|-------------|---------|
|
|
197
|
+
| `--display-name <name>` | New display name | |
|
|
198
|
+
| `--type <type>` | New type | |
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
### pai project detect [path]
|
|
202
|
+
|
|
203
|
+
Detect which registered project the given path (or CWD) belongs to
|
|
204
|
+
|
|
205
|
+
**Arguments**
|
|
206
|
+
|
|
207
|
+
| Argument | Kind |
|
|
208
|
+
|----------|------|
|
|
209
|
+
| `[path]` | optional |
|
|
210
|
+
|
|
211
|
+
**Options**
|
|
212
|
+
|
|
213
|
+
| Option | Description | Default |
|
|
214
|
+
|--------|-------------|---------|
|
|
215
|
+
| `--json` | Output raw JSON instead of human-readable text | |
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
### pai project health
|
|
219
|
+
|
|
220
|
+
Audit all registered projects: check which paths still exist, find moved/dead projects
|
|
221
|
+
|
|
222
|
+
**Options**
|
|
223
|
+
|
|
224
|
+
| Option | Description | Default |
|
|
225
|
+
|--------|-------------|---------|
|
|
226
|
+
| `--fix` | Auto-remediate where possible | |
|
|
227
|
+
| `--json` | Output raw JSON report | |
|
|
228
|
+
| `--status <category>` | Filter output to: active \| stale \| dead | |
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
### pai project consolidate <identifier>
|
|
232
|
+
|
|
233
|
+
Consolidate scattered ~/.claude/projects/.../Notes/ directories for a project into its canonical Notes/ location
|
|
234
|
+
|
|
235
|
+
**Arguments**
|
|
236
|
+
|
|
237
|
+
| Argument | Kind |
|
|
238
|
+
|----------|------|
|
|
239
|
+
| `<identifier>` | required |
|
|
240
|
+
|
|
241
|
+
**Options**
|
|
242
|
+
|
|
243
|
+
| Option | Description | Default |
|
|
244
|
+
|--------|-------------|---------|
|
|
245
|
+
| `--yes` | Perform consolidation without confirmation prompt | |
|
|
246
|
+
| `--dry-run` | Preview what would be moved without making changes | |
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
### pai project promote
|
|
250
|
+
|
|
251
|
+
Promote a session note into a new standalone project
|
|
252
|
+
|
|
253
|
+
**Options**
|
|
254
|
+
|
|
255
|
+
| Option | Description | Default |
|
|
256
|
+
|--------|-------------|---------|
|
|
257
|
+
| `--from-session <path>` | Path to the session note markdown file | |
|
|
258
|
+
| `--to <path>` | Directory path for the new project (must not exist) | |
|
|
259
|
+
| `--name <name>` | Display name for the new project (derived from filename if omitted) | |
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
### pai project go <query>
|
|
263
|
+
|
|
264
|
+
Print the root path for a project by slug, partial name, or fuzzy match.
|
|
265
|
+
|
|
266
|
+
Designed for shell integration: cd $(pai projects go <query>)
|
|
267
|
+
|
|
268
|
+
**Arguments**
|
|
269
|
+
|
|
270
|
+
| Argument | Kind |
|
|
271
|
+
|----------|------|
|
|
272
|
+
| `<query>` | required |
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
### pai project name <identifier> <shortname>
|
|
276
|
+
|
|
277
|
+
Give a project a short name for quick access
|
|
278
|
+
|
|
279
|
+
**Arguments**
|
|
280
|
+
|
|
281
|
+
| Argument | Kind |
|
|
282
|
+
|----------|------|
|
|
283
|
+
| `<identifier>` | required |
|
|
284
|
+
| `<shortname>` | required |
|
|
285
|
+
|
|
286
|
+
**Options**
|
|
287
|
+
|
|
288
|
+
| Option | Description | Default |
|
|
289
|
+
|--------|-------------|---------|
|
|
290
|
+
| `--permission <level>` | Permission level: full \| trusted \| default | |
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
### pai project unname <shortname>
|
|
294
|
+
|
|
295
|
+
Remove a project's short name
|
|
296
|
+
|
|
297
|
+
**Arguments**
|
|
298
|
+
|
|
299
|
+
| Argument | Kind |
|
|
300
|
+
|----------|------|
|
|
301
|
+
| `<shortname>` | required |
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
### pai project names
|
|
305
|
+
|
|
306
|
+
List named projects (your curated shortlist)
|
|
307
|
+
|
|
308
|
+
**Options**
|
|
309
|
+
|
|
310
|
+
| Option | Description | Default |
|
|
311
|
+
|--------|-------------|---------|
|
|
312
|
+
| `--json` | Output JSON for AIBroker consumption | |
|
|
313
|
+
|
|
314
|
+
|
|
315
|
+
### pai project config [identifier]
|
|
316
|
+
|
|
317
|
+
View or modify session launch config for a project.
|
|
318
|
+
|
|
319
|
+
Use --options to discover available keys and presets.
|
|
320
|
+
|
|
321
|
+
**Arguments**
|
|
322
|
+
|
|
323
|
+
| Argument | Kind |
|
|
324
|
+
|----------|------|
|
|
325
|
+
| `[identifier]` | optional |
|
|
326
|
+
|
|
327
|
+
**Options**
|
|
328
|
+
|
|
329
|
+
| Option | Description | Default |
|
|
330
|
+
|--------|-------------|---------|
|
|
331
|
+
| `--set <key=value...>` | Set config values (repeatable) | `` |
|
|
332
|
+
| `--unset <key...>` | Remove config keys (repeatable, use env.KEY for env vars) | `` |
|
|
333
|
+
| `--preset <name>` | Apply a permission preset: full \| trusted \| default | |
|
|
334
|
+
| `--defaults` | Manage global session defaults instead of a project | |
|
|
335
|
+
| `--options` | List available config keys and presets | |
|
|
336
|
+
| `--json` | Output JSON | |
|
|
337
|
+
| `--reset` | Reset config to empty (inherit global defaults) | |
|
|
338
|
+
|
|
339
|
+
|
|
340
|
+
## See also
|
|
341
|
+
|
|
342
|
+
[`pai backup`](backup.md) · [`pai clear-names`](clear-names.md) · [`pai daemon`](daemon.md) · [`pai db`](db.md) · [`pai end`](end.md) · [`pai help`](help.md) · [`pai kg`](kg.md) · [`pai mcp`](mcp.md) · [`pai memory`](memory.md) · [`pai notify`](notify.md) · [`pai observation`](observation.md) · [`pai obsidian`](obsidian.md) · [`pai pause`](pause.md) · [`pai projects`](projects.md) · [`pai registry`](registry.md) · [`pai restore`](restore.md) · [`pai sessions`](sessions.md) · [`pai setup`](setup.md) · [`pai shell-init`](shell-init.md) · [`pai skill`](skill.md) · [`pai topic`](topic.md) · [`pai update`](update.md) · [`pai zettel`](zettel.md)
|
|
343
|
+
|
|
344
|
+
Run `pai help <area>` to read any of these in the terminal.
|
|
345
|
+
|