@tekmidian/pai 1.0.5 → 1.0.6
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/.claude-plugin/plugin.json +1 -1
- package/dist/{aibroker-client-CQPGqLxL.mjs → aibroker-client-CXsyC7A8.mjs} +2 -2
- package/dist/aibroker-client-ChB7gSxV.mjs +3 -0
- package/dist/auto-route-Bc8xP6TQ.mjs +11 -0
- package/dist/{auto-route-DUYr57rs.mjs → auto-route-YaEGVrFl.mjs} +2 -2
- package/dist/budget-DEiebT2A.mjs +15 -0
- package/dist/{caller-identity-Bim8JT-D.mjs → caller-identity-C6Nc96iM.mjs} +4 -4
- package/dist/{capacity-CsZMkVyg.mjs → capacity-B2PgKAg4.mjs} +65 -5
- package/dist/{chain-Dzz6xcKH.mjs → chain-CtK49-Ma.mjs} +5 -5
- package/dist/cli/index.mjs +2102 -282
- package/dist/{cockpit-actions-BgsiNcUY.mjs → cockpit-actions-C73mJAJ8.mjs} +18 -18
- package/dist/{cockpit-actions-BTA1njMO.mjs → cockpit-actions-D1OPP6Es.mjs} +26 -26
- package/dist/cockpit-memory-CLHZD64W.mjs +20 -0
- package/dist/config/defaults/config.yaml +18 -1
- package/dist/{config-CST2uq1v.mjs → config-Bz8pAU5Q.mjs} +3 -3
- package/dist/{config-Dv3t7xnT.mjs → config-DHgPx3ER.mjs} +1 -1
- package/dist/{config-h5qK3fst.mjs → config-DLmyEK2q.mjs} +2 -2
- package/dist/{config-DYbyEe4-.mjs → config-SlZ-Z52i.mjs} +3 -2
- package/dist/{controls-OiVVbe-f.mjs → controls-rIItFeIJ.mjs} +59 -66
- package/dist/daemon/index.mjs +40 -40
- package/dist/daemon-176qA79N.mjs +46 -0
- package/dist/{daemon-C1dycZ3W.mjs → daemon-SoUvPUOf.mjs} +79 -31
- package/dist/daemon-mcp/index.mjs +49 -38
- package/dist/detect-C8nFP-kR.mjs +10 -0
- package/dist/{detect-CHuxFrLy.mjs → detect-DLjeYwnt.mjs} +2 -2
- package/dist/{embed-pass-DtVF2fOV.mjs → embed-pass-CN1D8MXl.mjs} +5 -5
- package/dist/{embedding-gate-B98PK_wz.mjs → embedding-gate-BVQvUmox.mjs} +2 -2
- package/dist/{embedding-gate-CTAk8STe.mjs → embedding-gate-iq0oQEkF.mjs} +3 -3
- package/dist/{endreason-BqyyU7BH.mjs → endreason-C2-hYK0_.mjs} +4 -4
- package/dist/{factory-BV0MQA3T.mjs → factory-CYwa0jYj.mjs} +6 -6
- package/dist/factory-DFwez99M.mjs +9 -0
- package/dist/{fallback-Bj2cyVk_.mjs → fallback-CwPSCrX8.mjs} +9 -231
- package/dist/{health-kufVIf6i.mjs → health-D0mUAVdw.mjs} +5 -5
- package/dist/{helpers-CvbYEKoD.mjs → helpers-Dj2nY56t.mjs} +2 -2
- package/dist/{helpers-WV8tdQHM.mjs → helpers-DyHKAwrW.mjs} +6 -6
- package/dist/hooks/capture-all-events.mjs +68 -3
- package/dist/hooks/capture-tool-output.mjs +68 -3
- package/dist/hooks/handoff-link.mjs +128 -0
- package/dist/hooks/load-project-context.mjs +1 -1
- package/dist/hooks/security-validator.mjs +840 -88
- package/dist/hooks/supervision-banner.mjs +186 -48
- package/dist/hooks/worker-guard.mjs +57 -1
- package/dist/hooks/worker-note.mjs +68 -3
- package/dist/hooks/worker-pool-host.mjs +1417 -224
- package/dist/hooks/worker-status-line.mjs +209 -70
- package/dist/index.mjs +9 -9
- package/dist/{ipc-client-CnYEF31R.mjs → ipc-client-CmagIFLh.mjs} +2 -2
- package/dist/{ipc-client-DN7EvoVo.mjs → ipc-client-DmbSIBUK.mjs} +1 -1
- package/dist/{kill-tree-CcpsRLCZ.mjs → kill-tree-DPiMscaY.mjs} +8 -8
- package/dist/kill-tree-Dxei6qlR.mjs +10 -0
- package/dist/{launch-UPQBoW2q.mjs → launch-BZT3JDoZ.mjs} +3 -3
- package/dist/{launch-DpQPZGsT.mjs → launch-Bn2Zf90h.mjs} +3 -3
- package/dist/{indexer-backend-B2vtFl38.mjs → lessons-CFVU0cwA.mjs} +262 -43
- package/dist/{local-candidate-Cp_bw4kK.mjs → local-candidate-DFd4pp-w.mjs} +3 -3
- package/dist/{local-instances-bdCNNSsL.mjs → local-instances-DhF4_sV2.mjs} +2 -2
- package/dist/{local-instances-B-c-CxzP.mjs → local-instances-KTh8IeOT.mjs} +4 -4
- package/dist/{local-tiers-BtdEEe5n.mjs → local-tiers-CqwGUcEn.mjs} +3 -3
- package/dist/{local-tiers-OBqAAfOg.mjs → local-tiers-DSlIYvvm.mjs} +3 -3
- package/dist/{main-config-ops-BYsK3BxM.mjs → main-config-ops-rda08BCD.mjs} +3 -3
- package/dist/{main-resolver-CAC3xfZM.mjs → main-resolver-BKwI0I6H.mjs} +18 -18
- package/dist/{migrate-DrA_OwlZ.mjs → migrate-C2z1YmWC.mjs} +2 -2
- package/dist/{model-inventory-BuTpi9a6.mjs → model-inventory-BXv15B0d.mjs} +13 -13
- package/dist/{models-add-CJx2YAwh.mjs → models-add-5yXTyz3g.mjs} +38 -38
- package/dist/operator-Bmv5tiHQ.mjs +7 -0
- package/dist/{operator-DrwWItVt.mjs → operator-Br6GeswF.mjs} +2 -2
- package/dist/{pai-marker-DLKJ9Yr5.mjs → pai-marker-D6OoVbM_.mjs} +2 -2
- package/dist/{pane-audit-wv9UkyCe.mjs → pane-audit-DLYy9-4g.mjs} +13 -23
- package/dist/{paths-DS5VQKoR.mjs → paths-CypxFTfn.mjs} +4 -4
- package/dist/{paths-DBd78I7Z.mjs → paths-DIOwNcj-.mjs} +3 -3
- package/dist/{planner-K0mFrCpL.mjs → planner-BzZ_2lc-.mjs} +29 -29
- package/dist/{pool-BZ94nFuq.mjs → pool-9EsbKD-U.mjs} +2 -2
- package/dist/{pool-cli-BjYQDfx6.mjs → pool-cli-Cy5mlycP.mjs} +6 -6
- package/dist/{pool-cli-B1eKySeN.mjs → pool-cli-Db0uDwB9.mjs} +5 -5
- package/dist/{postgres-CBHY5PIi.mjs → postgres-B1B80bcj.mjs} +3 -3
- package/dist/{postgres-C-T5OWer.mjs → postgres-BL5oBBgY.mjs} +3 -3
- package/dist/{project-setup-pIPHZaXf.mjs → project-setup-DHxdJjEc.mjs} +24 -25
- package/dist/providers-BH6hQYbU.mjs +16 -0
- package/dist/{providers-Dzx5GAUI.mjs → providers-BNV7CzC-.mjs} +6 -6
- package/dist/{query-feedback-DN52N9C5.mjs → query-feedback-BWl2HRwN.mjs} +2 -2
- package/dist/registrable-BwFiqazy.mjs +9 -0
- package/dist/{registrable-CXBBpUcz.mjs → registrable-Dxs4oKIj.mjs} +4 -4
- package/dist/render-DVGXpfaT.mjs +13 -0
- package/dist/render-jPpMrudf.mjs +2240 -0
- package/dist/root-C8cxhdn9.mjs +36 -0
- package/dist/{root-bG48WVpW.mjs → root-DmOzMeSv.mjs} +10 -10
- package/dist/route-table-COAmc1nB.mjs +15 -0
- package/dist/{router-CQSc3lk3.mjs → router-D2476pOp.mjs} +2 -2
- package/dist/{router-DwHJRgG9.mjs → router-ghujlEFb.mjs} +1 -1
- package/dist/{routing-D27jxj9x.mjs → routing-B_cg1_Xx.mjs} +13 -13
- package/dist/{routing-BlD_tKjW.mjs → routing-aJKMIagQ.mjs} +15 -15
- package/dist/{run-AZVwceiU.mjs → run-DE9Q0ldN.mjs} +47 -31
- package/dist/{runtime-paths-WsO9sJFc.mjs → runtime-paths-twfV23YL.mjs} +2 -2
- package/dist/{scan-C3uotg_f.mjs → scan-CNMcltOX.mjs} +7 -7
- package/dist/{scope-D8HK6vU7.mjs → scope-BTWstJ1B.mjs} +4 -4
- package/dist/session-DgZifjLx.mjs +35 -0
- package/dist/{session-BAfypQb9.mjs → session-HBYOABWU.mjs} +28 -28
- package/dist/session-scan-BZxnYN1v.mjs +9 -0
- package/dist/{session-scan-BmnjSReu.mjs → session-scan-CX3MKCNg.mjs} +6 -6
- package/dist/{session-usage-oycSdiD3.mjs → session-usage-CCmPFFa6.mjs} +3 -3
- package/dist/{status-COtzewKV.mjs → status-Cecau8Ps.mjs} +9 -5
- package/dist/status-D52xC_i0.mjs +6 -0
- package/dist/{tool-errors-DXJ70-sr.mjs → tool-errors-BFw1gv-z.mjs} +2 -2
- package/dist/{tool-errors-B2LnIqR0.mjs → tool-errors-COM2JGEr.mjs} +6 -6
- package/dist/viewer-Ce-Xa9L3.mjs +22 -0
- package/dist/{viewer-BgGRqXfD.mjs → viewer-DvBg6N22.mjs} +16 -14
- package/dist/{wait-ChpHKJZV.mjs → wait-C5iWILj_.mjs} +3 -3
- package/dist/worker-config-BmcJ9R0U.mjs +42 -0
- package/dist/{worker-config-DgdT0iTB.mjs → worker-config-DkONNk_H.mjs} +54 -103
- package/dist/{workers-config-BhZBrR-Q.mjs → workers-config-DwzrtdYu.mjs} +2 -2
- package/dist/{worktree-BY--Rgmy.mjs → worktree-O_kU6Q3y.mjs} +164 -8
- package/dist/{zettelkasten-BHVx5zj-.mjs → zettelkasten-BH8AdNh8.mjs} +4 -4
- package/dist/{zettelkasten-LoH9RBiN.mjs → zettelkasten-FFhQFESJ.mjs} +2 -2
- package/docs/commands/README.md +32 -2
- package/docs/commands/audit.md +34 -3
- package/docs/commands/backup.md +1 -1
- package/docs/commands/build.md +4 -4
- package/docs/commands/cd.md +1 -1
- package/docs/commands/clear-names.md +1 -1
- package/docs/commands/cockpit.md +1 -1
- package/docs/commands/config.md +1 -1
- package/docs/commands/daemon.md +1 -1
- package/docs/commands/db.md +1 -1
- package/docs/commands/doc.md +1 -1
- package/docs/commands/end.md +1 -1
- package/docs/commands/find.md +1 -1
- package/docs/commands/git.md +110 -0
- package/docs/commands/handoff.md +70 -0
- package/docs/commands/harness.md +74 -0
- package/docs/commands/help.md +1 -1
- package/docs/commands/home.md +1 -1
- package/docs/commands/hooks-db.md +1 -1
- package/docs/commands/identity.md +1 -1
- package/docs/commands/install.md +1 -1
- package/docs/commands/issue.md +1 -1
- package/docs/commands/kg.md +1 -1
- package/docs/commands/launch.md +1 -1
- package/docs/commands/lessons.md +201 -0
- package/docs/commands/list.md +1 -1
- package/docs/commands/ls.md +1 -1
- package/docs/commands/mcp.md +1 -1
- package/docs/commands/memory.md +1 -1
- package/docs/commands/models.md +1 -1
- package/docs/commands/more.md +1 -1
- package/docs/commands/new.md +1 -1
- package/docs/commands/notes.md +1 -1
- package/docs/commands/notify.md +1 -1
- package/docs/commands/observation.md +1 -1
- package/docs/commands/obsidian.md +1 -1
- package/docs/commands/open.md +1 -1
- package/docs/commands/pane.md +1 -1
- package/docs/commands/pause.md +1 -1
- package/docs/commands/plan.md +1 -1
- package/docs/commands/project.md +1 -1
- package/docs/commands/projects.md +1 -1
- package/docs/commands/providers.md +1 -1
- package/docs/commands/queue.md +1 -1
- package/docs/commands/registry.md +1 -1
- package/docs/commands/reload.md +1 -1
- package/docs/commands/rename.md +1 -1
- package/docs/commands/restore.md +1 -1
- package/docs/commands/resume.md +1 -1
- package/docs/commands/router.md +1 -1
- package/docs/commands/rules.md +70 -0
- package/docs/commands/session.md +1 -1
- package/docs/commands/sessions.md +1 -1
- package/docs/commands/setup.md +1 -1
- package/docs/commands/setups.md +1 -1
- package/docs/commands/shell-init.md +1 -1
- package/docs/commands/skill.md +1 -1
- package/docs/commands/task.md +1 -1
- package/docs/commands/tasks.md +1 -1
- package/docs/commands/topic.md +1 -1
- package/docs/commands/update.md +1 -1
- package/docs/commands/worker.md +1 -1
- package/docs/commands/zettel.md +1 -1
- package/docs/concepts/panes.md +3 -2
- package/gemini-extension.json +1 -1
- package/package.json +2 -2
- package/pai-plugin.json +1 -1
- package/plugins/context-preservation/plugin.json +1 -1
- package/plugins/core/plugin.json +1 -1
- package/plugins/creative/plugin.json +1 -1
- package/plugins/observability/plugin.json +1 -1
- package/plugins/productivity/plugin.json +1 -1
- package/plugins/semantic-search/plugin.json +1 -1
- package/plugins/ui/plugin.json +1 -1
- package/plugins/zettelkasten/plugin.json +1 -1
- package/src/hooks/ts/lib/loop-guard.ts +3 -5
- package/src/hooks/ts/lib/rules/builtin/base64-decode-to-shell.rule.yaml +13 -0
- package/src/hooks/ts/lib/rules/builtin/chmod-world-writable.rule.yaml +13 -0
- package/src/hooks/ts/lib/rules/builtin/chmod-zero.rule.yaml +11 -0
- package/src/hooks/ts/lib/rules/builtin/credential-file-read.rule.yaml +13 -0
- package/src/hooks/ts/lib/rules/builtin/credential-read-then-network.rule.yaml +29 -0
- package/src/hooks/ts/lib/rules/builtin/crontab-persistence.rule.yaml +10 -0
- package/src/hooks/ts/lib/rules/builtin/curl-piped-to-shell.rule.yaml +15 -0
- package/src/hooks/ts/lib/rules/builtin/download-then-execute.rule.yaml +30 -0
- package/src/hooks/ts/lib/rules/builtin/find-root-delete.rule.yaml +11 -0
- package/src/hooks/ts/lib/rules/builtin/git-push-force.rule.yaml +24 -0
- package/src/hooks/ts/lib/rules/builtin/git-push-plus-refspec.rule.yaml +12 -0
- package/src/hooks/ts/lib/rules/builtin/git-reset-hard.rule.yaml +12 -0
- package/src/hooks/ts/lib/rules/builtin/injection-then-tool.rule.yaml +30 -0
- package/src/hooks/ts/lib/rules/builtin/instruction-override-disregard.rule.yaml +12 -0
- package/src/hooks/ts/lib/rules/builtin/instruction-override-ignore.rule.yaml +13 -0
- package/src/hooks/ts/lib/rules/builtin/launchagents-write-persistence.rule.yaml +12 -0
- package/src/hooks/ts/lib/rules/builtin/launchctl-load-persistence.rule.yaml +10 -0
- package/src/hooks/ts/lib/rules/builtin/reverse-shell-dev-tcp.rule.yaml +11 -0
- package/src/hooks/ts/lib/rules/builtin/reverse-shell-interactive-bash.rule.yaml +11 -0
- package/src/hooks/ts/lib/rules/builtin/rm-recursive-parent.rule.yaml +11 -0
- package/src/hooks/ts/lib/rules/builtin/rm-recursive-relative.rule.yaml +11 -0
- package/src/hooks/ts/lib/rules/builtin/rm-recursive-root.rule.yaml +24 -0
- package/src/hooks/ts/lib/rules/builtin/rm-trailing-tilde.rule.yaml +11 -0
- package/src/hooks/ts/lib/rules/builtin/sudoers-nopasswd.rule.yaml +15 -0
- package/src/hooks/ts/lib/rules/builtin.generated.ts +530 -0
- package/src/hooks/ts/lib/rules/eval.ts +74 -0
- package/src/hooks/ts/lib/rules/lint.ts +102 -0
- package/src/hooks/ts/lib/rules/load.ts +229 -0
- package/src/hooks/ts/lib/rules/types.ts +56 -0
- package/src/hooks/ts/pre-tool-use/security-validator.ts +27 -96
- package/src/hooks/ts/user-prompt/handoff-link.ts +34 -0
- package/dist/aibroker-client-BxzeEHPF.mjs +0 -3
- package/dist/auto-route-DWYK_0i0.mjs +0 -11
- package/dist/budget-DX-VIWGf.mjs +0 -15
- package/dist/cockpit-memory-DIrNs4xr.mjs +0 -20
- package/dist/daemon-ieo0lnpq.mjs +0 -46
- package/dist/detect-C0ZBXqDL.mjs +0 -10
- package/dist/factory-DeASMV7Z.mjs +0 -9
- package/dist/kill-tree-CXZ0WfVf.mjs +0 -10
- package/dist/operator-Bpxq_WB5.mjs +0 -7
- package/dist/providers-QJzpaNhX.mjs +0 -16
- package/dist/registrable-Drn8wIDO.mjs +0 -9
- package/dist/render-C4KR8qQ8.mjs +0 -13
- package/dist/render-Cz3BWIBO.mjs +0 -903
- package/dist/root-Bfb1zgwE.mjs +0 -36
- package/dist/route-table-ZVMNBsy7.mjs +0 -15
- package/dist/session-BcnhepLZ.mjs +0 -35
- package/dist/session-scan-CqUQdCac.mjs +0 -9
- package/dist/status-D_SWmOlH.mjs +0 -6
- package/dist/viewer-CbGN2Ri4.mjs +0 -22
- package/dist/worker-config-D1KVAMp4.mjs +0 -42
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { t as writeFileAtomic } from "./atomic-file-BorMa4T3.mjs";
|
|
2
|
-
import { Et as appendLedger } from "./config-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { Et as appendLedger } from "./config-Bz8pAU5Q.mjs";
|
|
3
|
+
import { c as loadConfig } from "./config-SlZ-Z52i.mjs";
|
|
4
|
+
import { i as ledgerPath, l as statusPath } from "./paths-CypxFTfn.mjs";
|
|
5
|
+
import { a as UNLABELED, g as isLive, k as saveStatus, v as loadStatus, y as loadStatuses } from "./status-Cecau8Ps.mjs";
|
|
5
6
|
import { t as fmtAge } from "./fmt-age-ByDkvkoU.mjs";
|
|
6
|
-
import { v as readPoolState } from "./pool-
|
|
7
|
+
import { v as readPoolState } from "./pool-9EsbKD-U.mjs";
|
|
7
8
|
import { existsSync, lstatSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, readlinkSync, realpathSync, rmSync, statSync, writeFileSync } from "node:fs";
|
|
8
9
|
import { basename, dirname, isAbsolute, join, resolve, sep } from "node:path";
|
|
9
10
|
import { platform, tmpdir } from "node:os";
|
|
@@ -1320,6 +1321,148 @@ function adoptDetachedHead(dir, branch) {
|
|
|
1320
1321
|
return null;
|
|
1321
1322
|
}
|
|
1322
1323
|
}
|
|
1324
|
+
function mergeSettings() {
|
|
1325
|
+
const m = loadConfig().workers?.merge;
|
|
1326
|
+
return {
|
|
1327
|
+
generated: m?.generated ?? [],
|
|
1328
|
+
regenerate: m?.regenerate ?? ""
|
|
1329
|
+
};
|
|
1330
|
+
}
|
|
1331
|
+
/** Glob to RegExp: `**` crosses directories, `*` and `?` stay inside one. */
|
|
1332
|
+
function globToRegExp(glob) {
|
|
1333
|
+
let re = "";
|
|
1334
|
+
for (let i = 0; i < glob.length; i++) {
|
|
1335
|
+
const c = glob[i];
|
|
1336
|
+
if (c === "*" && glob[i + 1] === "*") {
|
|
1337
|
+
re += ".*";
|
|
1338
|
+
i++;
|
|
1339
|
+
if (glob[i + 1] === "/") i++;
|
|
1340
|
+
} else if (c === "*") re += "[^/]*";
|
|
1341
|
+
else if (c === "?") re += "[^/]";
|
|
1342
|
+
else re += c.replace(/[.+^${}()|[\]\\]/g, "\\$&");
|
|
1343
|
+
}
|
|
1344
|
+
return new RegExp(`^${re}$`);
|
|
1345
|
+
}
|
|
1346
|
+
/** Does the diff from `base` to `side` only add lines (nothing removed or changed)? */
|
|
1347
|
+
function onlyAdds(dir, base, side) {
|
|
1348
|
+
const r = spawnSync("git", [
|
|
1349
|
+
"diff",
|
|
1350
|
+
"--no-index",
|
|
1351
|
+
"--numstat",
|
|
1352
|
+
"--",
|
|
1353
|
+
base,
|
|
1354
|
+
side
|
|
1355
|
+
], {
|
|
1356
|
+
cwd: dir,
|
|
1357
|
+
encoding: "utf8"
|
|
1358
|
+
});
|
|
1359
|
+
const m = /^(\d+)\t(\d+)\t/.exec(r.stdout ?? "");
|
|
1360
|
+
return !m || m[2] === "0";
|
|
1361
|
+
}
|
|
1362
|
+
/**
|
|
1363
|
+
* Resolve the conflicts of a merge in progress when every one is either in a
|
|
1364
|
+
* generated path (take ours, regenerate, add) or a pure-addition clash (both
|
|
1365
|
+
* sides only added lines: union, ours then theirs). Returns a note on success,
|
|
1366
|
+
* null when anything else conflicts (merge left in progress for the caller to
|
|
1367
|
+
* abort); throws after aborting when regeneration fails.
|
|
1368
|
+
*/
|
|
1369
|
+
function autoResolveMerge(cwd, files, cfg) {
|
|
1370
|
+
const res = cfg.generated.map(globToRegExp);
|
|
1371
|
+
const isGen = (f) => res.some((r) => r.test(f));
|
|
1372
|
+
const gen = files.filter(isGen);
|
|
1373
|
+
const rest = files.filter((f) => !isGen(f));
|
|
1374
|
+
const tmp = mkdtempSync(join(tmpdir(), "pai-union-"));
|
|
1375
|
+
const unions = [];
|
|
1376
|
+
try {
|
|
1377
|
+
for (const f of rest) {
|
|
1378
|
+
const stage = (n, name) => {
|
|
1379
|
+
const r = spawnSync("git", ["show", `:${n}:${f}`], {
|
|
1380
|
+
cwd,
|
|
1381
|
+
encoding: "buffer"
|
|
1382
|
+
});
|
|
1383
|
+
if (r.status !== 0) return null;
|
|
1384
|
+
writeFileSync(join(tmp, name), r.stdout);
|
|
1385
|
+
return join(tmp, name);
|
|
1386
|
+
};
|
|
1387
|
+
const base = stage(1, "base");
|
|
1388
|
+
const ours = stage(2, "ours");
|
|
1389
|
+
const theirs = stage(3, "theirs");
|
|
1390
|
+
if (!base || !ours || !theirs || !onlyAdds(cwd, base, ours) || !onlyAdds(cwd, base, theirs)) return null;
|
|
1391
|
+
const m = spawnSync("git", [
|
|
1392
|
+
"merge-file",
|
|
1393
|
+
"-p",
|
|
1394
|
+
"--union",
|
|
1395
|
+
ours,
|
|
1396
|
+
base,
|
|
1397
|
+
theirs
|
|
1398
|
+
], {
|
|
1399
|
+
cwd,
|
|
1400
|
+
encoding: "buffer"
|
|
1401
|
+
});
|
|
1402
|
+
if (m.status !== 0) return null;
|
|
1403
|
+
unions.push({
|
|
1404
|
+
file: f,
|
|
1405
|
+
content: m.stdout.toString("utf8")
|
|
1406
|
+
});
|
|
1407
|
+
}
|
|
1408
|
+
} finally {
|
|
1409
|
+
rmSync(tmp, {
|
|
1410
|
+
recursive: true,
|
|
1411
|
+
force: true
|
|
1412
|
+
});
|
|
1413
|
+
}
|
|
1414
|
+
const notes = [];
|
|
1415
|
+
if (gen.length) for (const f of gen) try {
|
|
1416
|
+
git(cwd, [
|
|
1417
|
+
"checkout",
|
|
1418
|
+
"--ours",
|
|
1419
|
+
"--",
|
|
1420
|
+
f
|
|
1421
|
+
]);
|
|
1422
|
+
} catch {
|
|
1423
|
+
git(cwd, [
|
|
1424
|
+
"rm",
|
|
1425
|
+
"-q",
|
|
1426
|
+
"--cached",
|
|
1427
|
+
"--ignore-unmatch",
|
|
1428
|
+
"--",
|
|
1429
|
+
f
|
|
1430
|
+
]);
|
|
1431
|
+
}
|
|
1432
|
+
for (const u of unions) {
|
|
1433
|
+
writeFileSync(join(cwd, u.file), u.content, "utf8");
|
|
1434
|
+
git(cwd, [
|
|
1435
|
+
"add",
|
|
1436
|
+
"--",
|
|
1437
|
+
u.file
|
|
1438
|
+
]);
|
|
1439
|
+
}
|
|
1440
|
+
if (gen.length) {
|
|
1441
|
+
const r = spawnSync("sh", ["-c", cfg.regenerate], {
|
|
1442
|
+
cwd,
|
|
1443
|
+
encoding: "utf8"
|
|
1444
|
+
});
|
|
1445
|
+
if (!cfg.regenerate || r.status !== 0) {
|
|
1446
|
+
git(cwd, ["merge", "--abort"]);
|
|
1447
|
+
throw new Error(`git refused the merge: conflicts in generated paths (${gen.join(", ")}) and regeneration ` + (cfg.regenerate ? `\`${cfg.regenerate}\` failed (exit ${r.status}): ${(r.stderr || r.stdout || "").trim().slice(-400)}` : "is not configured (workers.merge.regenerate)") + "; the merge was aborted");
|
|
1448
|
+
}
|
|
1449
|
+
const specs = cfg.generated.map((g) => `:(glob)${g}`);
|
|
1450
|
+
git(cwd, [
|
|
1451
|
+
"add",
|
|
1452
|
+
"-A",
|
|
1453
|
+
"--",
|
|
1454
|
+
...specs
|
|
1455
|
+
]);
|
|
1456
|
+
const count = git(cwd, [
|
|
1457
|
+
"ls-files",
|
|
1458
|
+
"--",
|
|
1459
|
+
...specs
|
|
1460
|
+
]).split("\n").filter(Boolean).length;
|
|
1461
|
+
notes.push(`regenerated ${cfg.generated.filter((g) => gen.some((f) => globToRegExp(g).test(f))).map((g) => g.replace(/\/?\*\*$/, "")).join(", ")} (${count} files)`);
|
|
1462
|
+
}
|
|
1463
|
+
for (const u of unions) notes.push(`union-merged ${u.file}`);
|
|
1464
|
+
return notes.join("; ");
|
|
1465
|
+
}
|
|
1323
1466
|
function mergeWorker(logDir, id, opts = {}) {
|
|
1324
1467
|
const st = mustHaveBranch(logDir, id);
|
|
1325
1468
|
if (st.merged) return `worker ${id}: branch ${st.branch} already merged`;
|
|
@@ -1355,6 +1498,7 @@ function mergeWorker(logDir, id, opts = {}) {
|
|
|
1355
1498
|
const [scanFrom, scanTo] = reapply ? [`${reapply.merge}^1`, reapply.merge] : [mergeBase, st.branch];
|
|
1356
1499
|
assertStaticScans(st.cwd, scanFrom, scanTo);
|
|
1357
1500
|
const oldHead = git(st.cwd, ["rev-parse", "HEAD"]);
|
|
1501
|
+
let autoNote = null;
|
|
1358
1502
|
try {
|
|
1359
1503
|
if (reapply) git(st.cwd, [
|
|
1360
1504
|
"revert",
|
|
@@ -1383,7 +1527,16 @@ function mergeWorker(logDir, id, opts = {}) {
|
|
|
1383
1527
|
"--diff-filter=U"
|
|
1384
1528
|
]).split("\n").filter(Boolean);
|
|
1385
1529
|
} catch {}
|
|
1386
|
-
if (inProgress) {
|
|
1530
|
+
if (inProgress && files.length) {
|
|
1531
|
+
autoNote = autoResolveMerge(st.cwd, files, opts.merge ?? mergeSettings());
|
|
1532
|
+
if (autoNote !== null) git(st.cwd, [
|
|
1533
|
+
"commit",
|
|
1534
|
+
"-q",
|
|
1535
|
+
"-m",
|
|
1536
|
+
`merge worker ${id} (${st.label})`
|
|
1537
|
+
]);
|
|
1538
|
+
}
|
|
1539
|
+
if (inProgress && autoNote === null) {
|
|
1387
1540
|
git(st.cwd, ["merge", "--abort"]);
|
|
1388
1541
|
if (git(st.cwd, ["rev-parse", "HEAD"]) !== oldHead || git(st.cwd, [
|
|
1389
1542
|
"status",
|
|
@@ -1391,8 +1544,10 @@ function mergeWorker(logDir, id, opts = {}) {
|
|
|
1391
1544
|
"--untracked-files=no"
|
|
1392
1545
|
])) throw new Error(`worker ${id}: git merge --abort left ${st.cwd} not at ${oldHead}; inspect it before retrying`);
|
|
1393
1546
|
}
|
|
1394
|
-
|
|
1395
|
-
|
|
1547
|
+
if (autoNote === null) {
|
|
1548
|
+
const msg = `worker ${id}: git refused the merge of ${st.branch}` + (files.length ? ` — conflict in ${files.join(", ")}: merge main into the worker branch in its kept worktree (${st.worktreeDir}), resolve, then re-run pai worker merge ${id}` : ` — ${e.message}. The worktree ${st.worktreeDir} was kept: resolve the problem, then re-run pai worker merge ${id}`);
|
|
1549
|
+
throw files.length ? new MergeConflictError(msg, files) : new Error(msg);
|
|
1550
|
+
}
|
|
1396
1551
|
}
|
|
1397
1552
|
const verifyLine = gateLines(st.cwd, opts.verify, () => revertMerge(st.cwd, oldHead), () => null);
|
|
1398
1553
|
if (existsSync(st.worktreeDir) && !slot) assertWorktreeClean(st.worktreeDir, id);
|
|
@@ -1434,6 +1589,7 @@ function mergeWorker(logDir, id, opts = {}) {
|
|
|
1434
1589
|
const notes = [];
|
|
1435
1590
|
if (salvage.committed.length) notes.push(`salvaged ${salvage.committed.length} uncommitted change(s): ${salvage.committed.join(", ")}`);
|
|
1436
1591
|
if (salvage.skipped.length) notes.push(`skipped ${salvage.skipped.join(", ")}`);
|
|
1592
|
+
if (autoNote) notes.unshift(`auto-resolved conflicts: ${autoNote}`);
|
|
1437
1593
|
return withGate(verifyLine, notes.length ? `${base}; ${notes.join("; ")}` : base);
|
|
1438
1594
|
}
|
|
1439
1595
|
/** Stub and test-loss scans over `from..to`; throws before any merge exists, so the advised re-run works. */
|
|
@@ -2710,4 +2866,4 @@ function gcWorktreesThrottled(logDir, everyMin = 60, now = Date.now(), opts = {}
|
|
|
2710
2866
|
|
|
2711
2867
|
//#endregion
|
|
2712
2868
|
export { applyScratchEnv as A, worktreeWanted as C, formatPending as D, worktreesStatsCached as E, pendingGate as O, worktreeSystemPrompt as S, worktreesStats as T, ownedTree as _, archiveEmptyResult as a, verifyWorker as b, formatKnowledge as c, gcWorktrees as d, gcWorktreesThrottled as f, mergeWorker as g, markResumed as h, adoptTree as i, scratchPromptLine as j, pendingResults as k, formatWorktreesStats as l, leftoverWorktrees as m, MergeConflictError as n, commitLines as o, inPlaceSystemPrompt as p, addWorktree as r, discardWorker as s, GATE_MARK as t, gcPoolWorktrees as u, recordWorktree as v, worktreesDir as w, worktreeRefusesStart as x, salvageOnExit as y };
|
|
2713
|
-
//# sourceMappingURL=worktree-
|
|
2869
|
+
//# sourceMappingURL=worktree-O_kU6Q3y.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import "./config-
|
|
2
|
-
import "./embedding-gate-
|
|
1
|
+
import "./config-SlZ-Z52i.mjs";
|
|
2
|
+
import "./embedding-gate-iq0oQEkF.mjs";
|
|
3
3
|
import "./embeddings-BVq3esBF.mjs";
|
|
4
|
-
import { r as saveQueryResult } from "./query-feedback-
|
|
5
|
-
import { a as zettelThemes, c as zettelExplore, i as zettelHealth, n as zettelGodNotes, o as zettelConverse, r as zettelSuggest, s as zettelSurprise, t as zettelCommunities } from "./zettelkasten-
|
|
4
|
+
import { r as saveQueryResult } from "./query-feedback-BWl2HRwN.mjs";
|
|
5
|
+
import { a as zettelThemes, c as zettelExplore, i as zettelHealth, n as zettelGodNotes, o as zettelConverse, r as zettelSuggest, s as zettelSurprise, t as zettelCommunities } from "./zettelkasten-FFhQFESJ.mjs";
|
|
6
6
|
|
|
7
7
|
export { zettelConverse, zettelExplore, zettelHealth, zettelSuggest, zettelSurprise, zettelThemes };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as STOP_WORDS$1 } from "./stop-words-DSEYQdNe.mjs";
|
|
2
|
-
import { a as requireQueryEmbedding } from "./embedding-gate-
|
|
2
|
+
import { a as requireQueryEmbedding } from "./embedding-gate-iq0oQEkF.mjs";
|
|
3
3
|
import { i as deserializeEmbedding, r as cosineSimilarity } from "./embeddings-BVq3esBF.mjs";
|
|
4
4
|
import { basename, dirname } from "node:path";
|
|
5
5
|
|
|
@@ -1213,4 +1213,4 @@ async function zettelCommunities(backend, opts) {
|
|
|
1213
1213
|
|
|
1214
1214
|
//#endregion
|
|
1215
1215
|
export { zettelThemes as a, zettelExplore as c, zettelHealth as i, zettelGodNotes as n, zettelConverse as o, zettelSuggest as r, zettelSurprise as s, zettelCommunities as t };
|
|
1216
|
-
//# sourceMappingURL=zettelkasten-
|
|
1216
|
+
//# sourceMappingURL=zettelkasten-FFhQFESJ.mjs.map
|
package/docs/commands/README.md
CHANGED
|
@@ -20,6 +20,9 @@ Generated reference for every `pai` command. Read any page in the terminal with
|
|
|
20
20
|
| [`pai doc`](doc.md) | Write the Markdown command reference |
|
|
21
21
|
| [`pai end`](end.md) | Finish the current session |
|
|
22
22
|
| [`pai find`](find.md) | Search your prompt history for sessions |
|
|
23
|
+
| [`pai git`](git.md) | Link commits to the session that wrote them |
|
|
24
|
+
| [`pai handoff`](handoff.md) | Carry a session's work to a new one |
|
|
25
|
+
| [`pai harness`](harness.md) | Sessions PAI can read from agent harnesses (Claude Code, Codex, ...) |
|
|
23
26
|
| [`pai help`](help.md) | Explain a command (same as `pai <command> --help`) |
|
|
24
27
|
| [`pai home`](home.md) | Where PAI keeps its files; move them out of ~/.claude |
|
|
25
28
|
| [`pai hooks-db`](hooks-db.md) | Registry updates for the stop and pre-compact hooks |
|
|
@@ -28,6 +31,7 @@ Generated reference for every `pai` command. Read any page in the terminal with
|
|
|
28
31
|
| [`pai issue`](issue.md) | Claim and release forge issues for this project |
|
|
29
32
|
| [`pai kg`](kg.md) | Facts extracted from your notes, with the time they were true |
|
|
30
33
|
| [`pai launch`](launch.md) | Start Claude Code on a chosen provider (for scripts) |
|
|
34
|
+
| [`pai lessons`](lessons.md) | Review-gated lessons for agents |
|
|
31
35
|
| [`pai list`](list.md) | List the markdown session notes |
|
|
32
36
|
| [`pai ls`](ls.md) | List sessions, newest first |
|
|
33
37
|
| [`pai mcp`](mcp.md) | Install the PAI tools for Claude Code |
|
|
@@ -53,6 +57,7 @@ Generated reference for every `pai` command. Read any page in the terminal with
|
|
|
53
57
|
| [`pai restore`](restore.md) | Restore PAI data from a backup |
|
|
54
58
|
| [`pai resume`](resume.md) | Open a session by name or id (same as `pai open`) |
|
|
55
59
|
| [`pai router`](router.md) | Local model router: start, stop, restart, status, run, stats |
|
|
60
|
+
| [`pai rules`](rules.md) | Security rules: list them, lint their fixtures |
|
|
56
61
|
| [`pai session`](session.md) | Work with sessions: list, open, new, rename |
|
|
57
62
|
| [`pai sessions`](sessions.md) | Old plural session commands (use `ls` and `session`) |
|
|
58
63
|
| [`pai setup`](setup.md) | First-time setup: storage, search, hooks, daemon, router |
|
|
@@ -71,11 +76,12 @@ Generated reference for every `pai` command. Read any page in the terminal with
|
|
|
71
76
|
| Command | Description |
|
|
72
77
|
|---|---|
|
|
73
78
|
| `pai audit` | Find out where tokens are being spent |
|
|
79
|
+
| `pai audit scan` | After-the-fact security scan of a session or worker transcript |
|
|
74
80
|
| `pai audit tokens` | Token-waste report (all checks, or pick one below) |
|
|
75
81
|
| `pai audit tokens daemon` | What the background service spent |
|
|
76
82
|
| `pai audit tokens env` | Model and endpoint overrides on running sessions |
|
|
77
83
|
| `pai audit tokens files` | Token count per memory file |
|
|
78
|
-
| `pai audit tokens hooks` | Token cost of every start-up and prompt hook |
|
|
84
|
+
| `pai audit tokens hooks` | Token cost and observed state of every start-up and prompt hook |
|
|
79
85
|
| `pai audit tokens ladder` | LIVE: first-turn context per configuration step |
|
|
80
86
|
| `pai audit tokens mcp` | MCP servers: configured, pinned, loaded, used |
|
|
81
87
|
| `pai audit tokens schedule` | Scheduled jobs that beat the cache lifetime |
|
|
@@ -86,7 +92,7 @@ Generated reference for every `pai` command. Read any page in the terminal with
|
|
|
86
92
|
| `pai audit tokens usage` | Exact token totals per model for one session transcript |
|
|
87
93
|
| `pai backup` | Back up the registry, config and Postgres database |
|
|
88
94
|
| `pai build` | One machine-wide build queue: run, lock, queue, next, doctor |
|
|
89
|
-
| `pai build doctor` | Check the project's registered build doors |
|
|
95
|
+
| `pai build doctor` | Check the project's registered build doors and hook events |
|
|
90
96
|
| `pai build lock` | Same lock as `run`, for a project's door script to call |
|
|
91
97
|
| `pai build next` | Give a waiting build the next free slot |
|
|
92
98
|
| `pai build queue` | Show the running and waiting builds and tests |
|
|
@@ -126,6 +132,18 @@ Generated reference for every `pai` command. Read any page in the terminal with
|
|
|
126
132
|
| `pai doc` | Write the Markdown command reference |
|
|
127
133
|
| `pai end` | Finish the current session |
|
|
128
134
|
| `pai find` | Search your prompt history for sessions |
|
|
135
|
+
| `pai git` | Link commits to the session that wrote them |
|
|
136
|
+
| `pai git hook` | Git hook entry points (called by git) |
|
|
137
|
+
| `pai git hook post-commit` | Record the sessions that edited the last commit's files |
|
|
138
|
+
| `pai git notes` | Show the PAI note of a commit |
|
|
139
|
+
| `pai git remove` | Remove the hook and restore the previous one |
|
|
140
|
+
| `pai git setup` | Install the post-commit hook in the current repository |
|
|
141
|
+
| `pai handoff` | Carry a session's work to a new one |
|
|
142
|
+
| `pai handoff export` | Write the brief for a session (default: newest here) |
|
|
143
|
+
| `pai handoff show` | Print a handoff brief |
|
|
144
|
+
| `pai harness` | Sessions PAI can read from agent harnesses (Claude Code, Codex, ...) |
|
|
145
|
+
| `pai harness list` | Each adapter: detected, enabled, session count |
|
|
146
|
+
| `pai harness sessions` | List sessions, newest first |
|
|
129
147
|
| `pai help` | Explain a command (same as `pai <command> --help`) |
|
|
130
148
|
| `pai home` | Where PAI keeps its files; move them out of ~/.claude |
|
|
131
149
|
| `pai home migrate` | Move PAI's home from ~/.claude/pai to ~/.pai |
|
|
@@ -150,6 +168,15 @@ Generated reference for every `pai` command. Read any page in the terminal with
|
|
|
150
168
|
| `pai kg query` | Look up facts by subject, predicate, object or date |
|
|
151
169
|
| `pai kg stats` | How many facts and contradictions the graph holds |
|
|
152
170
|
| `pai launch` | Start Claude Code on a chosen provider (for scripts) |
|
|
171
|
+
| `pai lessons` | Review-gated lessons for agents |
|
|
172
|
+
| `pai lessons add` | Add a candidate lesson |
|
|
173
|
+
| `pai lessons approve` | Approve a candidate |
|
|
174
|
+
| `pai lessons list` | List lessons |
|
|
175
|
+
| `pai lessons promote` | Promote an approved lesson to a project skill |
|
|
176
|
+
| `pai lessons propose` | Add candidates from a transcript |
|
|
177
|
+
| `pai lessons reject` | Reject a candidate |
|
|
178
|
+
| `pai lessons show` | Show one lesson |
|
|
179
|
+
| `pai lessons supersede` | Replace an approved lesson by another approved one |
|
|
153
180
|
| `pai list` | List the markdown session notes |
|
|
154
181
|
| `pai ls` | List sessions, newest first |
|
|
155
182
|
| `pai mcp` | Install the PAI tools for Claude Code |
|
|
@@ -292,6 +319,9 @@ Generated reference for every `pai` command. Read any page in the terminal with
|
|
|
292
319
|
| `pai router stats` | Token and cache totals per provider and model |
|
|
293
320
|
| `pai router status` | Show whether the router is running |
|
|
294
321
|
| `pai router stop` | Stop the router |
|
|
322
|
+
| `pai rules` | Security rules: list them, lint their fixtures |
|
|
323
|
+
| `pai rules lint` | Run every rule's fixtures; exit 1 on a failure or load error |
|
|
324
|
+
| `pai rules list` | Every rule with severity, source and enabled state |
|
|
295
325
|
| `pai session` | Work with sessions: list, open, new, rename |
|
|
296
326
|
| `pai session active` | Sessions that were active in the last hour |
|
|
297
327
|
| `pai session auto-route` | Find out which project the current directory belongs to |
|
package/docs/commands/audit.md
CHANGED
|
@@ -68,22 +68,24 @@ See also: `pai audit tokens`
|
|
|
68
68
|
|
|
69
69
|
#### pai audit tokens hooks
|
|
70
70
|
|
|
71
|
-
Token cost of every start-up and prompt hook
|
|
71
|
+
Token cost and observed state of every start-up and prompt hook
|
|
72
72
|
|
|
73
73
|
```
|
|
74
74
|
pai audit tokens hooks [options]
|
|
75
75
|
```
|
|
76
76
|
|
|
77
|
-
Lists each SessionStart and UserPromptSubmit hook. With --run it executes them and measures what each adds to the context; without it nothing is executed.
|
|
77
|
+
Lists each SessionStart and UserPromptSubmit hook with its state: observed (a capture for that event exists in the window), configured (never observed — the hook may silently not be running), or missing-script. With --run it executes them and measures what each adds to the context; without it nothing is executed.
|
|
78
78
|
|
|
79
79
|
| Flag | Type | Default | Description |
|
|
80
80
|
|---|---|---|---|
|
|
81
81
|
| `--run` | flag | — | Execute the hooks to measure their output (runs the repository's own hook commands; trusted repositories only) |
|
|
82
|
+
| `--since HOURS` | number | — | Observation window for the state column (default 24h) |
|
|
82
83
|
| `--json` | flag | — | Print JSON instead of a table |
|
|
83
84
|
|
|
84
85
|
```sh
|
|
85
86
|
pai audit tokens hooks
|
|
86
87
|
pai audit tokens hooks --run
|
|
88
|
+
pai audit tokens hooks --since 48
|
|
87
89
|
```
|
|
88
90
|
|
|
89
91
|
See also: `pai audit tokens`
|
|
@@ -323,15 +325,44 @@ pai audit tokens ladder --live --model haiku
|
|
|
323
325
|
|
|
324
326
|
See also: `pai audit tokens`
|
|
325
327
|
|
|
328
|
+
### pai audit scan
|
|
329
|
+
|
|
330
|
+
After-the-fact security scan of a session or worker transcript
|
|
331
|
+
|
|
332
|
+
```
|
|
333
|
+
pai audit scan [PATH] [options]
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
Runs the rule set (the same rules the PreToolUse hook enforces, plus two-step sequence rules that only make sense after the fact) over a transcript: single-step rules against every tool call, sequence rules correlated across the run — credential read followed by an outbound call, download followed by execute, injected text followed by a shell call. Findings are grouped by severity; evidence is masked. Exit 1 when a block-severity finding hit.
|
|
337
|
+
|
|
338
|
+
| Argument | Required | Description |
|
|
339
|
+
|---|---|---|
|
|
340
|
+
| `PATH` | no | Transcript .jsonl (default: newest session under ~/.claude/projects) |
|
|
341
|
+
|
|
342
|
+
| Flag | Type | Default | Description |
|
|
343
|
+
|---|---|---|---|
|
|
344
|
+
| `--session ID` | string | — | Scan this Claude Code session's transcript |
|
|
345
|
+
| `--worker ID` | string | — | Scan a worker's transcript (its Claude session, else its event log) |
|
|
346
|
+
| `--json` | flag | — | Print JSON instead of a table |
|
|
347
|
+
|
|
348
|
+
```sh
|
|
349
|
+
pai audit scan
|
|
350
|
+
pai audit scan --worker w-20260101-abc
|
|
351
|
+
pai audit scan ./session.jsonl --json
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
See also: `pai rules list`, `pai audit tokens session`
|
|
355
|
+
|
|
326
356
|
## Subcommands
|
|
327
357
|
|
|
328
358
|
| Command | Description |
|
|
329
359
|
|---|---|
|
|
330
360
|
| `pai audit tokens` | Token-waste report (all checks, or pick one below) |
|
|
361
|
+
| `pai audit scan` | After-the-fact security scan of a session or worker transcript |
|
|
331
362
|
|
|
332
363
|
## See also
|
|
333
364
|
|
|
334
|
-
[`pai backup`](backup.md) · [`pai build`](build.md) · [`pai cd`](cd.md) · [`pai clear-names`](clear-names.md) · [`pai cockpit`](cockpit.md) · [`pai config`](config.md) · [`pai daemon`](daemon.md) · [`pai db`](db.md) · [`pai doc`](doc.md) · [`pai end`](end.md) · [`pai find`](find.md) · [`pai help`](help.md) · [`pai home`](home.md) · [`pai hooks-db`](hooks-db.md) · [`pai identity`](identity.md) · [`pai install`](install.md) · [`pai issue`](issue.md) · [`pai kg`](kg.md) · [`pai launch`](launch.md) · [`pai list`](list.md) · [`pai ls`](ls.md) · [`pai mcp`](mcp.md) · [`pai memory`](memory.md) · [`pai models`](models.md) · [`pai more`](more.md) · [`pai new`](new.md) · [`pai notes`](notes.md) · [`pai notify`](notify.md) · [`pai observation`](observation.md) · [`pai obsidian`](obsidian.md) · [`pai open`](open.md) · [`pai pane`](pane.md) · [`pai pause`](pause.md) · [`pai plan`](plan.md) · [`pai project`](project.md) · [`pai projects`](projects.md) · [`pai providers`](providers.md) · [`pai queue`](queue.md) · [`pai registry`](registry.md) · [`pai reload`](reload.md) · [`pai rename`](rename.md) · [`pai restore`](restore.md) · [`pai resume`](resume.md) · [`pai router`](router.md) · [`pai session`](session.md) · [`pai sessions`](sessions.md) · [`pai setup`](setup.md) · [`pai setups`](setups.md) · [`pai shell-init`](shell-init.md) · [`pai skill`](skill.md) · [`pai task`](task.md) · [`pai tasks`](tasks.md) · [`pai topic`](topic.md) · [`pai update`](update.md) · [`pai worker`](worker.md) · [`pai zettel`](zettel.md)
|
|
365
|
+
[`pai backup`](backup.md) · [`pai build`](build.md) · [`pai cd`](cd.md) · [`pai clear-names`](clear-names.md) · [`pai cockpit`](cockpit.md) · [`pai config`](config.md) · [`pai daemon`](daemon.md) · [`pai db`](db.md) · [`pai doc`](doc.md) · [`pai end`](end.md) · [`pai find`](find.md) · [`pai git`](git.md) · [`pai handoff`](handoff.md) · [`pai harness`](harness.md) · [`pai help`](help.md) · [`pai home`](home.md) · [`pai hooks-db`](hooks-db.md) · [`pai identity`](identity.md) · [`pai install`](install.md) · [`pai issue`](issue.md) · [`pai kg`](kg.md) · [`pai launch`](launch.md) · [`pai lessons`](lessons.md) · [`pai list`](list.md) · [`pai ls`](ls.md) · [`pai mcp`](mcp.md) · [`pai memory`](memory.md) · [`pai models`](models.md) · [`pai more`](more.md) · [`pai new`](new.md) · [`pai notes`](notes.md) · [`pai notify`](notify.md) · [`pai observation`](observation.md) · [`pai obsidian`](obsidian.md) · [`pai open`](open.md) · [`pai pane`](pane.md) · [`pai pause`](pause.md) · [`pai plan`](plan.md) · [`pai project`](project.md) · [`pai projects`](projects.md) · [`pai providers`](providers.md) · [`pai queue`](queue.md) · [`pai registry`](registry.md) · [`pai reload`](reload.md) · [`pai rename`](rename.md) · [`pai restore`](restore.md) · [`pai resume`](resume.md) · [`pai router`](router.md) · [`pai rules`](rules.md) · [`pai session`](session.md) · [`pai sessions`](sessions.md) · [`pai setup`](setup.md) · [`pai setups`](setups.md) · [`pai shell-init`](shell-init.md) · [`pai skill`](skill.md) · [`pai task`](task.md) · [`pai tasks`](tasks.md) · [`pai topic`](topic.md) · [`pai update`](update.md) · [`pai worker`](worker.md) · [`pai zettel`](zettel.md)
|
|
335
366
|
|
|
336
367
|
Run `pai help <command>` to read any of these in the terminal.
|
|
337
368
|
|
package/docs/commands/backup.md
CHANGED
|
@@ -25,7 +25,7 @@ See also: `pai restore`
|
|
|
25
25
|
|
|
26
26
|
## See also
|
|
27
27
|
|
|
28
|
-
[`pai audit`](audit.md) · [`pai build`](build.md) · [`pai cd`](cd.md) · [`pai clear-names`](clear-names.md) · [`pai cockpit`](cockpit.md) · [`pai config`](config.md) · [`pai daemon`](daemon.md) · [`pai db`](db.md) · [`pai doc`](doc.md) · [`pai end`](end.md) · [`pai find`](find.md) · [`pai help`](help.md) · [`pai home`](home.md) · [`pai hooks-db`](hooks-db.md) · [`pai identity`](identity.md) · [`pai install`](install.md) · [`pai issue`](issue.md) · [`pai kg`](kg.md) · [`pai launch`](launch.md) · [`pai list`](list.md) · [`pai ls`](ls.md) · [`pai mcp`](mcp.md) · [`pai memory`](memory.md) · [`pai models`](models.md) · [`pai more`](more.md) · [`pai new`](new.md) · [`pai notes`](notes.md) · [`pai notify`](notify.md) · [`pai observation`](observation.md) · [`pai obsidian`](obsidian.md) · [`pai open`](open.md) · [`pai pane`](pane.md) · [`pai pause`](pause.md) · [`pai plan`](plan.md) · [`pai project`](project.md) · [`pai projects`](projects.md) · [`pai providers`](providers.md) · [`pai queue`](queue.md) · [`pai registry`](registry.md) · [`pai reload`](reload.md) · [`pai rename`](rename.md) · [`pai restore`](restore.md) · [`pai resume`](resume.md) · [`pai router`](router.md) · [`pai session`](session.md) · [`pai sessions`](sessions.md) · [`pai setup`](setup.md) · [`pai setups`](setups.md) · [`pai shell-init`](shell-init.md) · [`pai skill`](skill.md) · [`pai task`](task.md) · [`pai tasks`](tasks.md) · [`pai topic`](topic.md) · [`pai update`](update.md) · [`pai worker`](worker.md) · [`pai zettel`](zettel.md)
|
|
28
|
+
[`pai audit`](audit.md) · [`pai build`](build.md) · [`pai cd`](cd.md) · [`pai clear-names`](clear-names.md) · [`pai cockpit`](cockpit.md) · [`pai config`](config.md) · [`pai daemon`](daemon.md) · [`pai db`](db.md) · [`pai doc`](doc.md) · [`pai end`](end.md) · [`pai find`](find.md) · [`pai git`](git.md) · [`pai handoff`](handoff.md) · [`pai harness`](harness.md) · [`pai help`](help.md) · [`pai home`](home.md) · [`pai hooks-db`](hooks-db.md) · [`pai identity`](identity.md) · [`pai install`](install.md) · [`pai issue`](issue.md) · [`pai kg`](kg.md) · [`pai launch`](launch.md) · [`pai lessons`](lessons.md) · [`pai list`](list.md) · [`pai ls`](ls.md) · [`pai mcp`](mcp.md) · [`pai memory`](memory.md) · [`pai models`](models.md) · [`pai more`](more.md) · [`pai new`](new.md) · [`pai notes`](notes.md) · [`pai notify`](notify.md) · [`pai observation`](observation.md) · [`pai obsidian`](obsidian.md) · [`pai open`](open.md) · [`pai pane`](pane.md) · [`pai pause`](pause.md) · [`pai plan`](plan.md) · [`pai project`](project.md) · [`pai projects`](projects.md) · [`pai providers`](providers.md) · [`pai queue`](queue.md) · [`pai registry`](registry.md) · [`pai reload`](reload.md) · [`pai rename`](rename.md) · [`pai restore`](restore.md) · [`pai resume`](resume.md) · [`pai router`](router.md) · [`pai rules`](rules.md) · [`pai session`](session.md) · [`pai sessions`](sessions.md) · [`pai setup`](setup.md) · [`pai setups`](setups.md) · [`pai shell-init`](shell-init.md) · [`pai skill`](skill.md) · [`pai task`](task.md) · [`pai tasks`](tasks.md) · [`pai topic`](topic.md) · [`pai update`](update.md) · [`pai worker`](worker.md) · [`pai zettel`](zettel.md)
|
|
29
29
|
|
|
30
30
|
Run `pai help <command>` to read any of these in the terminal.
|
|
31
31
|
|
package/docs/commands/build.md
CHANGED
|
@@ -101,13 +101,13 @@ See also: `pai build queue`
|
|
|
101
101
|
|
|
102
102
|
### pai build doctor
|
|
103
103
|
|
|
104
|
-
Check the project's registered build doors
|
|
104
|
+
Check the project's registered build doors and hook events
|
|
105
105
|
|
|
106
106
|
```
|
|
107
107
|
pai build doctor
|
|
108
108
|
```
|
|
109
109
|
|
|
110
|
-
Reads .pai/builds.yaml above the current directory and flags every door that is missing or never calls `pai build lock`, which would bypass the queue.
|
|
110
|
+
Reads .pai/builds.yaml above the current directory and flags every door that is missing or never calls `pai build lock`, which would bypass the queue. Also prints one line per hook event: observed (a capture proves it ran) or configured-but-never-observed (warning — the hook may silently not be running).
|
|
111
111
|
|
|
112
112
|
```sh
|
|
113
113
|
pai build doctor
|
|
@@ -140,12 +140,12 @@ pai build watch DIR ID
|
|
|
140
140
|
| `pai build lock` | Same lock as `run`, for a project's door script to call |
|
|
141
141
|
| `pai build queue` | Show the running and waiting builds and tests |
|
|
142
142
|
| `pai build next` | Give a waiting build the next free slot |
|
|
143
|
-
| `pai build doctor` | Check the project's registered build doors |
|
|
143
|
+
| `pai build doctor` | Check the project's registered build doors and hook events |
|
|
144
144
|
| `pai build watch` | Internal: kill a build tree when its gate process dies |
|
|
145
145
|
|
|
146
146
|
## See also
|
|
147
147
|
|
|
148
|
-
[`pai audit`](audit.md) · [`pai backup`](backup.md) · [`pai cd`](cd.md) · [`pai clear-names`](clear-names.md) · [`pai cockpit`](cockpit.md) · [`pai config`](config.md) · [`pai daemon`](daemon.md) · [`pai db`](db.md) · [`pai doc`](doc.md) · [`pai end`](end.md) · [`pai find`](find.md) · [`pai help`](help.md) · [`pai home`](home.md) · [`pai hooks-db`](hooks-db.md) · [`pai identity`](identity.md) · [`pai install`](install.md) · [`pai issue`](issue.md) · [`pai kg`](kg.md) · [`pai launch`](launch.md) · [`pai list`](list.md) · [`pai ls`](ls.md) · [`pai mcp`](mcp.md) · [`pai memory`](memory.md) · [`pai models`](models.md) · [`pai more`](more.md) · [`pai new`](new.md) · [`pai notes`](notes.md) · [`pai notify`](notify.md) · [`pai observation`](observation.md) · [`pai obsidian`](obsidian.md) · [`pai open`](open.md) · [`pai pane`](pane.md) · [`pai pause`](pause.md) · [`pai plan`](plan.md) · [`pai project`](project.md) · [`pai projects`](projects.md) · [`pai providers`](providers.md) · [`pai queue`](queue.md) · [`pai registry`](registry.md) · [`pai reload`](reload.md) · [`pai rename`](rename.md) · [`pai restore`](restore.md) · [`pai resume`](resume.md) · [`pai router`](router.md) · [`pai session`](session.md) · [`pai sessions`](sessions.md) · [`pai setup`](setup.md) · [`pai setups`](setups.md) · [`pai shell-init`](shell-init.md) · [`pai skill`](skill.md) · [`pai task`](task.md) · [`pai tasks`](tasks.md) · [`pai topic`](topic.md) · [`pai update`](update.md) · [`pai worker`](worker.md) · [`pai zettel`](zettel.md)
|
|
148
|
+
[`pai audit`](audit.md) · [`pai backup`](backup.md) · [`pai cd`](cd.md) · [`pai clear-names`](clear-names.md) · [`pai cockpit`](cockpit.md) · [`pai config`](config.md) · [`pai daemon`](daemon.md) · [`pai db`](db.md) · [`pai doc`](doc.md) · [`pai end`](end.md) · [`pai find`](find.md) · [`pai git`](git.md) · [`pai handoff`](handoff.md) · [`pai harness`](harness.md) · [`pai help`](help.md) · [`pai home`](home.md) · [`pai hooks-db`](hooks-db.md) · [`pai identity`](identity.md) · [`pai install`](install.md) · [`pai issue`](issue.md) · [`pai kg`](kg.md) · [`pai launch`](launch.md) · [`pai lessons`](lessons.md) · [`pai list`](list.md) · [`pai ls`](ls.md) · [`pai mcp`](mcp.md) · [`pai memory`](memory.md) · [`pai models`](models.md) · [`pai more`](more.md) · [`pai new`](new.md) · [`pai notes`](notes.md) · [`pai notify`](notify.md) · [`pai observation`](observation.md) · [`pai obsidian`](obsidian.md) · [`pai open`](open.md) · [`pai pane`](pane.md) · [`pai pause`](pause.md) · [`pai plan`](plan.md) · [`pai project`](project.md) · [`pai projects`](projects.md) · [`pai providers`](providers.md) · [`pai queue`](queue.md) · [`pai registry`](registry.md) · [`pai reload`](reload.md) · [`pai rename`](rename.md) · [`pai restore`](restore.md) · [`pai resume`](resume.md) · [`pai router`](router.md) · [`pai rules`](rules.md) · [`pai session`](session.md) · [`pai sessions`](sessions.md) · [`pai setup`](setup.md) · [`pai setups`](setups.md) · [`pai shell-init`](shell-init.md) · [`pai skill`](skill.md) · [`pai task`](task.md) · [`pai tasks`](tasks.md) · [`pai topic`](topic.md) · [`pai update`](update.md) · [`pai worker`](worker.md) · [`pai zettel`](zettel.md)
|
|
149
149
|
|
|
150
150
|
Run `pai help <command>` to read any of these in the terminal.
|
|
151
151
|
|
package/docs/commands/cd.md
CHANGED
|
@@ -23,7 +23,7 @@ See also: `pai shell-init`
|
|
|
23
23
|
|
|
24
24
|
## See also
|
|
25
25
|
|
|
26
|
-
[`pai audit`](audit.md) · [`pai backup`](backup.md) · [`pai build`](build.md) · [`pai clear-names`](clear-names.md) · [`pai cockpit`](cockpit.md) · [`pai config`](config.md) · [`pai daemon`](daemon.md) · [`pai db`](db.md) · [`pai doc`](doc.md) · [`pai end`](end.md) · [`pai find`](find.md) · [`pai help`](help.md) · [`pai home`](home.md) · [`pai hooks-db`](hooks-db.md) · [`pai identity`](identity.md) · [`pai install`](install.md) · [`pai issue`](issue.md) · [`pai kg`](kg.md) · [`pai launch`](launch.md) · [`pai list`](list.md) · [`pai ls`](ls.md) · [`pai mcp`](mcp.md) · [`pai memory`](memory.md) · [`pai models`](models.md) · [`pai more`](more.md) · [`pai new`](new.md) · [`pai notes`](notes.md) · [`pai notify`](notify.md) · [`pai observation`](observation.md) · [`pai obsidian`](obsidian.md) · [`pai open`](open.md) · [`pai pane`](pane.md) · [`pai pause`](pause.md) · [`pai plan`](plan.md) · [`pai project`](project.md) · [`pai projects`](projects.md) · [`pai providers`](providers.md) · [`pai queue`](queue.md) · [`pai registry`](registry.md) · [`pai reload`](reload.md) · [`pai rename`](rename.md) · [`pai restore`](restore.md) · [`pai resume`](resume.md) · [`pai router`](router.md) · [`pai session`](session.md) · [`pai sessions`](sessions.md) · [`pai setup`](setup.md) · [`pai setups`](setups.md) · [`pai shell-init`](shell-init.md) · [`pai skill`](skill.md) · [`pai task`](task.md) · [`pai tasks`](tasks.md) · [`pai topic`](topic.md) · [`pai update`](update.md) · [`pai worker`](worker.md) · [`pai zettel`](zettel.md)
|
|
26
|
+
[`pai audit`](audit.md) · [`pai backup`](backup.md) · [`pai build`](build.md) · [`pai clear-names`](clear-names.md) · [`pai cockpit`](cockpit.md) · [`pai config`](config.md) · [`pai daemon`](daemon.md) · [`pai db`](db.md) · [`pai doc`](doc.md) · [`pai end`](end.md) · [`pai find`](find.md) · [`pai git`](git.md) · [`pai handoff`](handoff.md) · [`pai harness`](harness.md) · [`pai help`](help.md) · [`pai home`](home.md) · [`pai hooks-db`](hooks-db.md) · [`pai identity`](identity.md) · [`pai install`](install.md) · [`pai issue`](issue.md) · [`pai kg`](kg.md) · [`pai launch`](launch.md) · [`pai lessons`](lessons.md) · [`pai list`](list.md) · [`pai ls`](ls.md) · [`pai mcp`](mcp.md) · [`pai memory`](memory.md) · [`pai models`](models.md) · [`pai more`](more.md) · [`pai new`](new.md) · [`pai notes`](notes.md) · [`pai notify`](notify.md) · [`pai observation`](observation.md) · [`pai obsidian`](obsidian.md) · [`pai open`](open.md) · [`pai pane`](pane.md) · [`pai pause`](pause.md) · [`pai plan`](plan.md) · [`pai project`](project.md) · [`pai projects`](projects.md) · [`pai providers`](providers.md) · [`pai queue`](queue.md) · [`pai registry`](registry.md) · [`pai reload`](reload.md) · [`pai rename`](rename.md) · [`pai restore`](restore.md) · [`pai resume`](resume.md) · [`pai router`](router.md) · [`pai rules`](rules.md) · [`pai session`](session.md) · [`pai sessions`](sessions.md) · [`pai setup`](setup.md) · [`pai setups`](setups.md) · [`pai shell-init`](shell-init.md) · [`pai skill`](skill.md) · [`pai task`](task.md) · [`pai tasks`](tasks.md) · [`pai topic`](topic.md) · [`pai update`](update.md) · [`pai worker`](worker.md) · [`pai zettel`](zettel.md)
|
|
27
27
|
|
|
28
28
|
Run `pai help <command>` to read any of these in the terminal.
|
|
29
29
|
|
|
@@ -23,7 +23,7 @@ See also: `pai sessions pause-all`
|
|
|
23
23
|
|
|
24
24
|
## See also
|
|
25
25
|
|
|
26
|
-
[`pai audit`](audit.md) · [`pai backup`](backup.md) · [`pai build`](build.md) · [`pai cd`](cd.md) · [`pai cockpit`](cockpit.md) · [`pai config`](config.md) · [`pai daemon`](daemon.md) · [`pai db`](db.md) · [`pai doc`](doc.md) · [`pai end`](end.md) · [`pai find`](find.md) · [`pai help`](help.md) · [`pai home`](home.md) · [`pai hooks-db`](hooks-db.md) · [`pai identity`](identity.md) · [`pai install`](install.md) · [`pai issue`](issue.md) · [`pai kg`](kg.md) · [`pai launch`](launch.md) · [`pai list`](list.md) · [`pai ls`](ls.md) · [`pai mcp`](mcp.md) · [`pai memory`](memory.md) · [`pai models`](models.md) · [`pai more`](more.md) · [`pai new`](new.md) · [`pai notes`](notes.md) · [`pai notify`](notify.md) · [`pai observation`](observation.md) · [`pai obsidian`](obsidian.md) · [`pai open`](open.md) · [`pai pane`](pane.md) · [`pai pause`](pause.md) · [`pai plan`](plan.md) · [`pai project`](project.md) · [`pai projects`](projects.md) · [`pai providers`](providers.md) · [`pai queue`](queue.md) · [`pai registry`](registry.md) · [`pai reload`](reload.md) · [`pai rename`](rename.md) · [`pai restore`](restore.md) · [`pai resume`](resume.md) · [`pai router`](router.md) · [`pai session`](session.md) · [`pai sessions`](sessions.md) · [`pai setup`](setup.md) · [`pai setups`](setups.md) · [`pai shell-init`](shell-init.md) · [`pai skill`](skill.md) · [`pai task`](task.md) · [`pai tasks`](tasks.md) · [`pai topic`](topic.md) · [`pai update`](update.md) · [`pai worker`](worker.md) · [`pai zettel`](zettel.md)
|
|
26
|
+
[`pai audit`](audit.md) · [`pai backup`](backup.md) · [`pai build`](build.md) · [`pai cd`](cd.md) · [`pai cockpit`](cockpit.md) · [`pai config`](config.md) · [`pai daemon`](daemon.md) · [`pai db`](db.md) · [`pai doc`](doc.md) · [`pai end`](end.md) · [`pai find`](find.md) · [`pai git`](git.md) · [`pai handoff`](handoff.md) · [`pai harness`](harness.md) · [`pai help`](help.md) · [`pai home`](home.md) · [`pai hooks-db`](hooks-db.md) · [`pai identity`](identity.md) · [`pai install`](install.md) · [`pai issue`](issue.md) · [`pai kg`](kg.md) · [`pai launch`](launch.md) · [`pai lessons`](lessons.md) · [`pai list`](list.md) · [`pai ls`](ls.md) · [`pai mcp`](mcp.md) · [`pai memory`](memory.md) · [`pai models`](models.md) · [`pai more`](more.md) · [`pai new`](new.md) · [`pai notes`](notes.md) · [`pai notify`](notify.md) · [`pai observation`](observation.md) · [`pai obsidian`](obsidian.md) · [`pai open`](open.md) · [`pai pane`](pane.md) · [`pai pause`](pause.md) · [`pai plan`](plan.md) · [`pai project`](project.md) · [`pai projects`](projects.md) · [`pai providers`](providers.md) · [`pai queue`](queue.md) · [`pai registry`](registry.md) · [`pai reload`](reload.md) · [`pai rename`](rename.md) · [`pai restore`](restore.md) · [`pai resume`](resume.md) · [`pai router`](router.md) · [`pai rules`](rules.md) · [`pai session`](session.md) · [`pai sessions`](sessions.md) · [`pai setup`](setup.md) · [`pai setups`](setups.md) · [`pai shell-init`](shell-init.md) · [`pai skill`](skill.md) · [`pai task`](task.md) · [`pai tasks`](tasks.md) · [`pai topic`](topic.md) · [`pai update`](update.md) · [`pai worker`](worker.md) · [`pai zettel`](zettel.md)
|
|
27
27
|
|
|
28
28
|
Run `pai help <command>` to read any of these in the terminal.
|
|
29
29
|
|
package/docs/commands/cockpit.md
CHANGED
|
@@ -58,7 +58,7 @@ See also: `pai router status`
|
|
|
58
58
|
|
|
59
59
|
## See also
|
|
60
60
|
|
|
61
|
-
[`pai audit`](audit.md) · [`pai backup`](backup.md) · [`pai build`](build.md) · [`pai cd`](cd.md) · [`pai clear-names`](clear-names.md) · [`pai config`](config.md) · [`pai daemon`](daemon.md) · [`pai db`](db.md) · [`pai doc`](doc.md) · [`pai end`](end.md) · [`pai find`](find.md) · [`pai help`](help.md) · [`pai home`](home.md) · [`pai hooks-db`](hooks-db.md) · [`pai identity`](identity.md) · [`pai install`](install.md) · [`pai issue`](issue.md) · [`pai kg`](kg.md) · [`pai launch`](launch.md) · [`pai list`](list.md) · [`pai ls`](ls.md) · [`pai mcp`](mcp.md) · [`pai memory`](memory.md) · [`pai models`](models.md) · [`pai more`](more.md) · [`pai new`](new.md) · [`pai notes`](notes.md) · [`pai notify`](notify.md) · [`pai observation`](observation.md) · [`pai obsidian`](obsidian.md) · [`pai open`](open.md) · [`pai pane`](pane.md) · [`pai pause`](pause.md) · [`pai plan`](plan.md) · [`pai project`](project.md) · [`pai projects`](projects.md) · [`pai providers`](providers.md) · [`pai queue`](queue.md) · [`pai registry`](registry.md) · [`pai reload`](reload.md) · [`pai rename`](rename.md) · [`pai restore`](restore.md) · [`pai resume`](resume.md) · [`pai router`](router.md) · [`pai session`](session.md) · [`pai sessions`](sessions.md) · [`pai setup`](setup.md) · [`pai setups`](setups.md) · [`pai shell-init`](shell-init.md) · [`pai skill`](skill.md) · [`pai task`](task.md) · [`pai tasks`](tasks.md) · [`pai topic`](topic.md) · [`pai update`](update.md) · [`pai worker`](worker.md) · [`pai zettel`](zettel.md)
|
|
61
|
+
[`pai audit`](audit.md) · [`pai backup`](backup.md) · [`pai build`](build.md) · [`pai cd`](cd.md) · [`pai clear-names`](clear-names.md) · [`pai config`](config.md) · [`pai daemon`](daemon.md) · [`pai db`](db.md) · [`pai doc`](doc.md) · [`pai end`](end.md) · [`pai find`](find.md) · [`pai git`](git.md) · [`pai handoff`](handoff.md) · [`pai harness`](harness.md) · [`pai help`](help.md) · [`pai home`](home.md) · [`pai hooks-db`](hooks-db.md) · [`pai identity`](identity.md) · [`pai install`](install.md) · [`pai issue`](issue.md) · [`pai kg`](kg.md) · [`pai launch`](launch.md) · [`pai lessons`](lessons.md) · [`pai list`](list.md) · [`pai ls`](ls.md) · [`pai mcp`](mcp.md) · [`pai memory`](memory.md) · [`pai models`](models.md) · [`pai more`](more.md) · [`pai new`](new.md) · [`pai notes`](notes.md) · [`pai notify`](notify.md) · [`pai observation`](observation.md) · [`pai obsidian`](obsidian.md) · [`pai open`](open.md) · [`pai pane`](pane.md) · [`pai pause`](pause.md) · [`pai plan`](plan.md) · [`pai project`](project.md) · [`pai projects`](projects.md) · [`pai providers`](providers.md) · [`pai queue`](queue.md) · [`pai registry`](registry.md) · [`pai reload`](reload.md) · [`pai rename`](rename.md) · [`pai restore`](restore.md) · [`pai resume`](resume.md) · [`pai router`](router.md) · [`pai rules`](rules.md) · [`pai session`](session.md) · [`pai sessions`](sessions.md) · [`pai setup`](setup.md) · [`pai setups`](setups.md) · [`pai shell-init`](shell-init.md) · [`pai skill`](skill.md) · [`pai task`](task.md) · [`pai tasks`](tasks.md) · [`pai topic`](topic.md) · [`pai update`](update.md) · [`pai worker`](worker.md) · [`pai zettel`](zettel.md)
|
|
62
62
|
|
|
63
63
|
Run `pai help <command>` to read any of these in the terminal.
|
|
64
64
|
|
package/docs/commands/config.md
CHANGED
|
@@ -242,7 +242,7 @@ See also: `pai config unset`
|
|
|
242
242
|
|
|
243
243
|
## See also
|
|
244
244
|
|
|
245
|
-
[`pai audit`](audit.md) · [`pai backup`](backup.md) · [`pai build`](build.md) · [`pai cd`](cd.md) · [`pai clear-names`](clear-names.md) · [`pai cockpit`](cockpit.md) · [`pai daemon`](daemon.md) · [`pai db`](db.md) · [`pai doc`](doc.md) · [`pai end`](end.md) · [`pai find`](find.md) · [`pai help`](help.md) · [`pai home`](home.md) · [`pai hooks-db`](hooks-db.md) · [`pai identity`](identity.md) · [`pai install`](install.md) · [`pai issue`](issue.md) · [`pai kg`](kg.md) · [`pai launch`](launch.md) · [`pai list`](list.md) · [`pai ls`](ls.md) · [`pai mcp`](mcp.md) · [`pai memory`](memory.md) · [`pai models`](models.md) · [`pai more`](more.md) · [`pai new`](new.md) · [`pai notes`](notes.md) · [`pai notify`](notify.md) · [`pai observation`](observation.md) · [`pai obsidian`](obsidian.md) · [`pai open`](open.md) · [`pai pane`](pane.md) · [`pai pause`](pause.md) · [`pai plan`](plan.md) · [`pai project`](project.md) · [`pai projects`](projects.md) · [`pai providers`](providers.md) · [`pai queue`](queue.md) · [`pai registry`](registry.md) · [`pai reload`](reload.md) · [`pai rename`](rename.md) · [`pai restore`](restore.md) · [`pai resume`](resume.md) · [`pai router`](router.md) · [`pai session`](session.md) · [`pai sessions`](sessions.md) · [`pai setup`](setup.md) · [`pai setups`](setups.md) · [`pai shell-init`](shell-init.md) · [`pai skill`](skill.md) · [`pai task`](task.md) · [`pai tasks`](tasks.md) · [`pai topic`](topic.md) · [`pai update`](update.md) · [`pai worker`](worker.md) · [`pai zettel`](zettel.md)
|
|
245
|
+
[`pai audit`](audit.md) · [`pai backup`](backup.md) · [`pai build`](build.md) · [`pai cd`](cd.md) · [`pai clear-names`](clear-names.md) · [`pai cockpit`](cockpit.md) · [`pai daemon`](daemon.md) · [`pai db`](db.md) · [`pai doc`](doc.md) · [`pai end`](end.md) · [`pai find`](find.md) · [`pai git`](git.md) · [`pai handoff`](handoff.md) · [`pai harness`](harness.md) · [`pai help`](help.md) · [`pai home`](home.md) · [`pai hooks-db`](hooks-db.md) · [`pai identity`](identity.md) · [`pai install`](install.md) · [`pai issue`](issue.md) · [`pai kg`](kg.md) · [`pai launch`](launch.md) · [`pai lessons`](lessons.md) · [`pai list`](list.md) · [`pai ls`](ls.md) · [`pai mcp`](mcp.md) · [`pai memory`](memory.md) · [`pai models`](models.md) · [`pai more`](more.md) · [`pai new`](new.md) · [`pai notes`](notes.md) · [`pai notify`](notify.md) · [`pai observation`](observation.md) · [`pai obsidian`](obsidian.md) · [`pai open`](open.md) · [`pai pane`](pane.md) · [`pai pause`](pause.md) · [`pai plan`](plan.md) · [`pai project`](project.md) · [`pai projects`](projects.md) · [`pai providers`](providers.md) · [`pai queue`](queue.md) · [`pai registry`](registry.md) · [`pai reload`](reload.md) · [`pai rename`](rename.md) · [`pai restore`](restore.md) · [`pai resume`](resume.md) · [`pai router`](router.md) · [`pai rules`](rules.md) · [`pai session`](session.md) · [`pai sessions`](sessions.md) · [`pai setup`](setup.md) · [`pai setups`](setups.md) · [`pai shell-init`](shell-init.md) · [`pai skill`](skill.md) · [`pai task`](task.md) · [`pai tasks`](tasks.md) · [`pai topic`](topic.md) · [`pai update`](update.md) · [`pai worker`](worker.md) · [`pai zettel`](zettel.md)
|
|
246
246
|
|
|
247
247
|
Run `pai help <command>` to read any of these in the terminal.
|
|
248
248
|
|
package/docs/commands/daemon.md
CHANGED
|
@@ -257,7 +257,7 @@ See also: `pai daemon status`
|
|
|
257
257
|
|
|
258
258
|
## See also
|
|
259
259
|
|
|
260
|
-
[`pai audit`](audit.md) · [`pai backup`](backup.md) · [`pai build`](build.md) · [`pai cd`](cd.md) · [`pai clear-names`](clear-names.md) · [`pai cockpit`](cockpit.md) · [`pai config`](config.md) · [`pai db`](db.md) · [`pai doc`](doc.md) · [`pai end`](end.md) · [`pai find`](find.md) · [`pai help`](help.md) · [`pai home`](home.md) · [`pai hooks-db`](hooks-db.md) · [`pai identity`](identity.md) · [`pai install`](install.md) · [`pai issue`](issue.md) · [`pai kg`](kg.md) · [`pai launch`](launch.md) · [`pai list`](list.md) · [`pai ls`](ls.md) · [`pai mcp`](mcp.md) · [`pai memory`](memory.md) · [`pai models`](models.md) · [`pai more`](more.md) · [`pai new`](new.md) · [`pai notes`](notes.md) · [`pai notify`](notify.md) · [`pai observation`](observation.md) · [`pai obsidian`](obsidian.md) · [`pai open`](open.md) · [`pai pane`](pane.md) · [`pai pause`](pause.md) · [`pai plan`](plan.md) · [`pai project`](project.md) · [`pai projects`](projects.md) · [`pai providers`](providers.md) · [`pai queue`](queue.md) · [`pai registry`](registry.md) · [`pai reload`](reload.md) · [`pai rename`](rename.md) · [`pai restore`](restore.md) · [`pai resume`](resume.md) · [`pai router`](router.md) · [`pai session`](session.md) · [`pai sessions`](sessions.md) · [`pai setup`](setup.md) · [`pai setups`](setups.md) · [`pai shell-init`](shell-init.md) · [`pai skill`](skill.md) · [`pai task`](task.md) · [`pai tasks`](tasks.md) · [`pai topic`](topic.md) · [`pai update`](update.md) · [`pai worker`](worker.md) · [`pai zettel`](zettel.md)
|
|
260
|
+
[`pai audit`](audit.md) · [`pai backup`](backup.md) · [`pai build`](build.md) · [`pai cd`](cd.md) · [`pai clear-names`](clear-names.md) · [`pai cockpit`](cockpit.md) · [`pai config`](config.md) · [`pai db`](db.md) · [`pai doc`](doc.md) · [`pai end`](end.md) · [`pai find`](find.md) · [`pai git`](git.md) · [`pai handoff`](handoff.md) · [`pai harness`](harness.md) · [`pai help`](help.md) · [`pai home`](home.md) · [`pai hooks-db`](hooks-db.md) · [`pai identity`](identity.md) · [`pai install`](install.md) · [`pai issue`](issue.md) · [`pai kg`](kg.md) · [`pai launch`](launch.md) · [`pai lessons`](lessons.md) · [`pai list`](list.md) · [`pai ls`](ls.md) · [`pai mcp`](mcp.md) · [`pai memory`](memory.md) · [`pai models`](models.md) · [`pai more`](more.md) · [`pai new`](new.md) · [`pai notes`](notes.md) · [`pai notify`](notify.md) · [`pai observation`](observation.md) · [`pai obsidian`](obsidian.md) · [`pai open`](open.md) · [`pai pane`](pane.md) · [`pai pause`](pause.md) · [`pai plan`](plan.md) · [`pai project`](project.md) · [`pai projects`](projects.md) · [`pai providers`](providers.md) · [`pai queue`](queue.md) · [`pai registry`](registry.md) · [`pai reload`](reload.md) · [`pai rename`](rename.md) · [`pai restore`](restore.md) · [`pai resume`](resume.md) · [`pai router`](router.md) · [`pai rules`](rules.md) · [`pai session`](session.md) · [`pai sessions`](sessions.md) · [`pai setup`](setup.md) · [`pai setups`](setups.md) · [`pai shell-init`](shell-init.md) · [`pai skill`](skill.md) · [`pai task`](task.md) · [`pai tasks`](tasks.md) · [`pai topic`](topic.md) · [`pai update`](update.md) · [`pai worker`](worker.md) · [`pai zettel`](zettel.md)
|
|
261
261
|
|
|
262
262
|
Run `pai help <command>` to read any of these in the terminal.
|
|
263
263
|
|
package/docs/commands/db.md
CHANGED
|
@@ -129,7 +129,7 @@ See also: `pai db schema`
|
|
|
129
129
|
|
|
130
130
|
## See also
|
|
131
131
|
|
|
132
|
-
[`pai audit`](audit.md) · [`pai backup`](backup.md) · [`pai build`](build.md) · [`pai cd`](cd.md) · [`pai clear-names`](clear-names.md) · [`pai cockpit`](cockpit.md) · [`pai config`](config.md) · [`pai daemon`](daemon.md) · [`pai doc`](doc.md) · [`pai end`](end.md) · [`pai find`](find.md) · [`pai help`](help.md) · [`pai home`](home.md) · [`pai hooks-db`](hooks-db.md) · [`pai identity`](identity.md) · [`pai install`](install.md) · [`pai issue`](issue.md) · [`pai kg`](kg.md) · [`pai launch`](launch.md) · [`pai list`](list.md) · [`pai ls`](ls.md) · [`pai mcp`](mcp.md) · [`pai memory`](memory.md) · [`pai models`](models.md) · [`pai more`](more.md) · [`pai new`](new.md) · [`pai notes`](notes.md) · [`pai notify`](notify.md) · [`pai observation`](observation.md) · [`pai obsidian`](obsidian.md) · [`pai open`](open.md) · [`pai pane`](pane.md) · [`pai pause`](pause.md) · [`pai plan`](plan.md) · [`pai project`](project.md) · [`pai projects`](projects.md) · [`pai providers`](providers.md) · [`pai queue`](queue.md) · [`pai registry`](registry.md) · [`pai reload`](reload.md) · [`pai rename`](rename.md) · [`pai restore`](restore.md) · [`pai resume`](resume.md) · [`pai router`](router.md) · [`pai session`](session.md) · [`pai sessions`](sessions.md) · [`pai setup`](setup.md) · [`pai setups`](setups.md) · [`pai shell-init`](shell-init.md) · [`pai skill`](skill.md) · [`pai task`](task.md) · [`pai tasks`](tasks.md) · [`pai topic`](topic.md) · [`pai update`](update.md) · [`pai worker`](worker.md) · [`pai zettel`](zettel.md)
|
|
132
|
+
[`pai audit`](audit.md) · [`pai backup`](backup.md) · [`pai build`](build.md) · [`pai cd`](cd.md) · [`pai clear-names`](clear-names.md) · [`pai cockpit`](cockpit.md) · [`pai config`](config.md) · [`pai daemon`](daemon.md) · [`pai doc`](doc.md) · [`pai end`](end.md) · [`pai find`](find.md) · [`pai git`](git.md) · [`pai handoff`](handoff.md) · [`pai harness`](harness.md) · [`pai help`](help.md) · [`pai home`](home.md) · [`pai hooks-db`](hooks-db.md) · [`pai identity`](identity.md) · [`pai install`](install.md) · [`pai issue`](issue.md) · [`pai kg`](kg.md) · [`pai launch`](launch.md) · [`pai lessons`](lessons.md) · [`pai list`](list.md) · [`pai ls`](ls.md) · [`pai mcp`](mcp.md) · [`pai memory`](memory.md) · [`pai models`](models.md) · [`pai more`](more.md) · [`pai new`](new.md) · [`pai notes`](notes.md) · [`pai notify`](notify.md) · [`pai observation`](observation.md) · [`pai obsidian`](obsidian.md) · [`pai open`](open.md) · [`pai pane`](pane.md) · [`pai pause`](pause.md) · [`pai plan`](plan.md) · [`pai project`](project.md) · [`pai projects`](projects.md) · [`pai providers`](providers.md) · [`pai queue`](queue.md) · [`pai registry`](registry.md) · [`pai reload`](reload.md) · [`pai rename`](rename.md) · [`pai restore`](restore.md) · [`pai resume`](resume.md) · [`pai router`](router.md) · [`pai rules`](rules.md) · [`pai session`](session.md) · [`pai sessions`](sessions.md) · [`pai setup`](setup.md) · [`pai setups`](setups.md) · [`pai shell-init`](shell-init.md) · [`pai skill`](skill.md) · [`pai task`](task.md) · [`pai tasks`](tasks.md) · [`pai topic`](topic.md) · [`pai update`](update.md) · [`pai worker`](worker.md) · [`pai zettel`](zettel.md)
|
|
133
133
|
|
|
134
134
|
Run `pai help <command>` to read any of these in the terminal.
|
|
135
135
|
|
package/docs/commands/doc.md
CHANGED
|
@@ -27,7 +27,7 @@ See also: `pai help`
|
|
|
27
27
|
|
|
28
28
|
## See also
|
|
29
29
|
|
|
30
|
-
[`pai audit`](audit.md) · [`pai backup`](backup.md) · [`pai build`](build.md) · [`pai cd`](cd.md) · [`pai clear-names`](clear-names.md) · [`pai cockpit`](cockpit.md) · [`pai config`](config.md) · [`pai daemon`](daemon.md) · [`pai db`](db.md) · [`pai end`](end.md) · [`pai find`](find.md) · [`pai help`](help.md) · [`pai home`](home.md) · [`pai hooks-db`](hooks-db.md) · [`pai identity`](identity.md) · [`pai install`](install.md) · [`pai issue`](issue.md) · [`pai kg`](kg.md) · [`pai launch`](launch.md) · [`pai list`](list.md) · [`pai ls`](ls.md) · [`pai mcp`](mcp.md) · [`pai memory`](memory.md) · [`pai models`](models.md) · [`pai more`](more.md) · [`pai new`](new.md) · [`pai notes`](notes.md) · [`pai notify`](notify.md) · [`pai observation`](observation.md) · [`pai obsidian`](obsidian.md) · [`pai open`](open.md) · [`pai pane`](pane.md) · [`pai pause`](pause.md) · [`pai plan`](plan.md) · [`pai project`](project.md) · [`pai projects`](projects.md) · [`pai providers`](providers.md) · [`pai queue`](queue.md) · [`pai registry`](registry.md) · [`pai reload`](reload.md) · [`pai rename`](rename.md) · [`pai restore`](restore.md) · [`pai resume`](resume.md) · [`pai router`](router.md) · [`pai session`](session.md) · [`pai sessions`](sessions.md) · [`pai setup`](setup.md) · [`pai setups`](setups.md) · [`pai shell-init`](shell-init.md) · [`pai skill`](skill.md) · [`pai task`](task.md) · [`pai tasks`](tasks.md) · [`pai topic`](topic.md) · [`pai update`](update.md) · [`pai worker`](worker.md) · [`pai zettel`](zettel.md)
|
|
30
|
+
[`pai audit`](audit.md) · [`pai backup`](backup.md) · [`pai build`](build.md) · [`pai cd`](cd.md) · [`pai clear-names`](clear-names.md) · [`pai cockpit`](cockpit.md) · [`pai config`](config.md) · [`pai daemon`](daemon.md) · [`pai db`](db.md) · [`pai end`](end.md) · [`pai find`](find.md) · [`pai git`](git.md) · [`pai handoff`](handoff.md) · [`pai harness`](harness.md) · [`pai help`](help.md) · [`pai home`](home.md) · [`pai hooks-db`](hooks-db.md) · [`pai identity`](identity.md) · [`pai install`](install.md) · [`pai issue`](issue.md) · [`pai kg`](kg.md) · [`pai launch`](launch.md) · [`pai lessons`](lessons.md) · [`pai list`](list.md) · [`pai ls`](ls.md) · [`pai mcp`](mcp.md) · [`pai memory`](memory.md) · [`pai models`](models.md) · [`pai more`](more.md) · [`pai new`](new.md) · [`pai notes`](notes.md) · [`pai notify`](notify.md) · [`pai observation`](observation.md) · [`pai obsidian`](obsidian.md) · [`pai open`](open.md) · [`pai pane`](pane.md) · [`pai pause`](pause.md) · [`pai plan`](plan.md) · [`pai project`](project.md) · [`pai projects`](projects.md) · [`pai providers`](providers.md) · [`pai queue`](queue.md) · [`pai registry`](registry.md) · [`pai reload`](reload.md) · [`pai rename`](rename.md) · [`pai restore`](restore.md) · [`pai resume`](resume.md) · [`pai router`](router.md) · [`pai rules`](rules.md) · [`pai session`](session.md) · [`pai sessions`](sessions.md) · [`pai setup`](setup.md) · [`pai setups`](setups.md) · [`pai shell-init`](shell-init.md) · [`pai skill`](skill.md) · [`pai task`](task.md) · [`pai tasks`](tasks.md) · [`pai topic`](topic.md) · [`pai update`](update.md) · [`pai worker`](worker.md) · [`pai zettel`](zettel.md)
|
|
31
31
|
|
|
32
32
|
Run `pai help <command>` to read any of these in the terminal.
|
|
33
33
|
|
package/docs/commands/end.md
CHANGED
|
@@ -26,7 +26,7 @@ See also: `pai pause`
|
|
|
26
26
|
|
|
27
27
|
## See also
|
|
28
28
|
|
|
29
|
-
[`pai audit`](audit.md) · [`pai backup`](backup.md) · [`pai build`](build.md) · [`pai cd`](cd.md) · [`pai clear-names`](clear-names.md) · [`pai cockpit`](cockpit.md) · [`pai config`](config.md) · [`pai daemon`](daemon.md) · [`pai db`](db.md) · [`pai doc`](doc.md) · [`pai find`](find.md) · [`pai help`](help.md) · [`pai home`](home.md) · [`pai hooks-db`](hooks-db.md) · [`pai identity`](identity.md) · [`pai install`](install.md) · [`pai issue`](issue.md) · [`pai kg`](kg.md) · [`pai launch`](launch.md) · [`pai list`](list.md) · [`pai ls`](ls.md) · [`pai mcp`](mcp.md) · [`pai memory`](memory.md) · [`pai models`](models.md) · [`pai more`](more.md) · [`pai new`](new.md) · [`pai notes`](notes.md) · [`pai notify`](notify.md) · [`pai observation`](observation.md) · [`pai obsidian`](obsidian.md) · [`pai open`](open.md) · [`pai pane`](pane.md) · [`pai pause`](pause.md) · [`pai plan`](plan.md) · [`pai project`](project.md) · [`pai projects`](projects.md) · [`pai providers`](providers.md) · [`pai queue`](queue.md) · [`pai registry`](registry.md) · [`pai reload`](reload.md) · [`pai rename`](rename.md) · [`pai restore`](restore.md) · [`pai resume`](resume.md) · [`pai router`](router.md) · [`pai session`](session.md) · [`pai sessions`](sessions.md) · [`pai setup`](setup.md) · [`pai setups`](setups.md) · [`pai shell-init`](shell-init.md) · [`pai skill`](skill.md) · [`pai task`](task.md) · [`pai tasks`](tasks.md) · [`pai topic`](topic.md) · [`pai update`](update.md) · [`pai worker`](worker.md) · [`pai zettel`](zettel.md)
|
|
29
|
+
[`pai audit`](audit.md) · [`pai backup`](backup.md) · [`pai build`](build.md) · [`pai cd`](cd.md) · [`pai clear-names`](clear-names.md) · [`pai cockpit`](cockpit.md) · [`pai config`](config.md) · [`pai daemon`](daemon.md) · [`pai db`](db.md) · [`pai doc`](doc.md) · [`pai find`](find.md) · [`pai git`](git.md) · [`pai handoff`](handoff.md) · [`pai harness`](harness.md) · [`pai help`](help.md) · [`pai home`](home.md) · [`pai hooks-db`](hooks-db.md) · [`pai identity`](identity.md) · [`pai install`](install.md) · [`pai issue`](issue.md) · [`pai kg`](kg.md) · [`pai launch`](launch.md) · [`pai lessons`](lessons.md) · [`pai list`](list.md) · [`pai ls`](ls.md) · [`pai mcp`](mcp.md) · [`pai memory`](memory.md) · [`pai models`](models.md) · [`pai more`](more.md) · [`pai new`](new.md) · [`pai notes`](notes.md) · [`pai notify`](notify.md) · [`pai observation`](observation.md) · [`pai obsidian`](obsidian.md) · [`pai open`](open.md) · [`pai pane`](pane.md) · [`pai pause`](pause.md) · [`pai plan`](plan.md) · [`pai project`](project.md) · [`pai projects`](projects.md) · [`pai providers`](providers.md) · [`pai queue`](queue.md) · [`pai registry`](registry.md) · [`pai reload`](reload.md) · [`pai rename`](rename.md) · [`pai restore`](restore.md) · [`pai resume`](resume.md) · [`pai router`](router.md) · [`pai rules`](rules.md) · [`pai session`](session.md) · [`pai sessions`](sessions.md) · [`pai setup`](setup.md) · [`pai setups`](setups.md) · [`pai shell-init`](shell-init.md) · [`pai skill`](skill.md) · [`pai task`](task.md) · [`pai tasks`](tasks.md) · [`pai topic`](topic.md) · [`pai update`](update.md) · [`pai worker`](worker.md) · [`pai zettel`](zettel.md)
|
|
30
30
|
|
|
31
31
|
Run `pai help <command>` to read any of these in the terminal.
|
|
32
32
|
|
package/docs/commands/find.md
CHANGED
|
@@ -28,7 +28,7 @@ See also: `pai ls`, `pai open`
|
|
|
28
28
|
|
|
29
29
|
## See also
|
|
30
30
|
|
|
31
|
-
[`pai audit`](audit.md) · [`pai backup`](backup.md) · [`pai build`](build.md) · [`pai cd`](cd.md) · [`pai clear-names`](clear-names.md) · [`pai cockpit`](cockpit.md) · [`pai config`](config.md) · [`pai daemon`](daemon.md) · [`pai db`](db.md) · [`pai doc`](doc.md) · [`pai end`](end.md) · [`pai help`](help.md) · [`pai home`](home.md) · [`pai hooks-db`](hooks-db.md) · [`pai identity`](identity.md) · [`pai install`](install.md) · [`pai issue`](issue.md) · [`pai kg`](kg.md) · [`pai launch`](launch.md) · [`pai list`](list.md) · [`pai ls`](ls.md) · [`pai mcp`](mcp.md) · [`pai memory`](memory.md) · [`pai models`](models.md) · [`pai more`](more.md) · [`pai new`](new.md) · [`pai notes`](notes.md) · [`pai notify`](notify.md) · [`pai observation`](observation.md) · [`pai obsidian`](obsidian.md) · [`pai open`](open.md) · [`pai pane`](pane.md) · [`pai pause`](pause.md) · [`pai plan`](plan.md) · [`pai project`](project.md) · [`pai projects`](projects.md) · [`pai providers`](providers.md) · [`pai queue`](queue.md) · [`pai registry`](registry.md) · [`pai reload`](reload.md) · [`pai rename`](rename.md) · [`pai restore`](restore.md) · [`pai resume`](resume.md) · [`pai router`](router.md) · [`pai session`](session.md) · [`pai sessions`](sessions.md) · [`pai setup`](setup.md) · [`pai setups`](setups.md) · [`pai shell-init`](shell-init.md) · [`pai skill`](skill.md) · [`pai task`](task.md) · [`pai tasks`](tasks.md) · [`pai topic`](topic.md) · [`pai update`](update.md) · [`pai worker`](worker.md) · [`pai zettel`](zettel.md)
|
|
31
|
+
[`pai audit`](audit.md) · [`pai backup`](backup.md) · [`pai build`](build.md) · [`pai cd`](cd.md) · [`pai clear-names`](clear-names.md) · [`pai cockpit`](cockpit.md) · [`pai config`](config.md) · [`pai daemon`](daemon.md) · [`pai db`](db.md) · [`pai doc`](doc.md) · [`pai end`](end.md) · [`pai git`](git.md) · [`pai handoff`](handoff.md) · [`pai harness`](harness.md) · [`pai help`](help.md) · [`pai home`](home.md) · [`pai hooks-db`](hooks-db.md) · [`pai identity`](identity.md) · [`pai install`](install.md) · [`pai issue`](issue.md) · [`pai kg`](kg.md) · [`pai launch`](launch.md) · [`pai lessons`](lessons.md) · [`pai list`](list.md) · [`pai ls`](ls.md) · [`pai mcp`](mcp.md) · [`pai memory`](memory.md) · [`pai models`](models.md) · [`pai more`](more.md) · [`pai new`](new.md) · [`pai notes`](notes.md) · [`pai notify`](notify.md) · [`pai observation`](observation.md) · [`pai obsidian`](obsidian.md) · [`pai open`](open.md) · [`pai pane`](pane.md) · [`pai pause`](pause.md) · [`pai plan`](plan.md) · [`pai project`](project.md) · [`pai projects`](projects.md) · [`pai providers`](providers.md) · [`pai queue`](queue.md) · [`pai registry`](registry.md) · [`pai reload`](reload.md) · [`pai rename`](rename.md) · [`pai restore`](restore.md) · [`pai resume`](resume.md) · [`pai router`](router.md) · [`pai rules`](rules.md) · [`pai session`](session.md) · [`pai sessions`](sessions.md) · [`pai setup`](setup.md) · [`pai setups`](setups.md) · [`pai shell-init`](shell-init.md) · [`pai skill`](skill.md) · [`pai task`](task.md) · [`pai tasks`](tasks.md) · [`pai topic`](topic.md) · [`pai update`](update.md) · [`pai worker`](worker.md) · [`pai zettel`](zettel.md)
|
|
32
32
|
|
|
33
33
|
Run `pai help <command>` to read any of these in the terminal.
|
|
34
34
|
|