@tekmidian/pai 0.63.0 → 0.65.0
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/ARCHITECTURE.md +3 -0
- package/README.md +38 -5
- package/dist/{aibroker-client-BYG-GtAg.mjs → aibroker-client-B8c42Lh8.mjs} +1 -1
- package/dist/{aibroker-client-BK1h--W_.mjs → aibroker-client-C5Fw7DNz.mjs} +10 -4
- package/dist/{aibroker-client-BK1h--W_.mjs.map → aibroker-client-C5Fw7DNz.mjs.map} +1 -1
- package/dist/{async-DNVWtQl2.mjs → async-CNn36gm4.mjs} +5 -4
- package/dist/async-CNn36gm4.mjs.map +1 -0
- package/dist/{auto-route-CF8WNaoy.mjs → auto-route-sLMU-NnM.mjs} +2 -2
- package/dist/{auto-route-CF8WNaoy.mjs.map → auto-route-sLMU-NnM.mjs.map} +1 -1
- package/dist/{chain-CUfE6WYK.mjs → chain-C8QO8gwj.mjs} +4 -4
- package/dist/{chain-CUfE6WYK.mjs.map → chain-C8QO8gwj.mjs.map} +1 -1
- package/dist/chunker-BH4i-F2b.mjs +300 -0
- package/dist/chunker-BH4i-F2b.mjs.map +1 -0
- package/dist/cli/index.mjs +20 -20
- package/dist/cli/program.d.mts.map +1 -1
- package/dist/cli/program.mjs +20 -20
- package/dist/{clusters-Ci1mseh2.mjs → clusters-PgIUYT_v.mjs} +2 -2
- package/dist/{clusters-Ci1mseh2.mjs.map → clusters-PgIUYT_v.mjs.map} +1 -1
- package/dist/{config-CQCmH_gV.mjs → config-BbLFD7Uf.mjs} +3 -3
- package/dist/{config-CQCmH_gV.mjs.map → config-BbLFD7Uf.mjs.map} +1 -1
- package/dist/{config-DjXq_W42.mjs → config-YinjgXEJ.mjs} +1 -1
- package/dist/{context-handover-cache-DFNnlWv2.mjs → context-handover-cache-mGxq2-8f.mjs} +11 -29
- package/dist/context-handover-cache-mGxq2-8f.mjs.map +1 -0
- package/dist/daemon/index.mjs +16 -16
- package/dist/daemon-CX9JomIJ.mjs +19 -0
- package/dist/{daemon-Cex3dT9f.mjs → daemon-D2r1AQqE.mjs} +31 -30
- package/dist/{daemon-Cex3dT9f.mjs.map → daemon-D2r1AQqE.mjs.map} +1 -1
- package/dist/daemon-mcp/index.mjs +29 -20
- package/dist/daemon-mcp/index.mjs.map +1 -1
- package/dist/detector-C3Q7mxQU.mjs +3 -0
- package/dist/{detector-3g7XuU1r.mjs → detector-CIHEXKsV.mjs} +2 -2
- package/dist/{detector-3g7XuU1r.mjs.map → detector-CIHEXKsV.mjs.map} +1 -1
- package/dist/{embeddings-DfrYNIng.mjs → embeddings-BbNVXa_0.mjs} +1 -1
- package/dist/{embeddings-DfrYNIng.mjs.map → embeddings-BbNVXa_0.mjs.map} +1 -1
- package/dist/{embeddings-BNv3TQC5.mjs → embeddings-CDfM63uC.mjs} +1 -1
- package/dist/{factory-UO9_DFMN.mjs → factory-CaswxuJ0.mjs} +1 -1
- package/dist/{factory-BozZa81q.mjs → factory-y36qGegI.mjs} +13 -13
- package/dist/{factory-BozZa81q.mjs.map → factory-y36qGegI.mjs.map} +1 -1
- package/dist/{fallback-ktbR0aR7.mjs → fallback-CWDQYmJi.mjs} +1205 -1204
- package/dist/fallback-CWDQYmJi.mjs.map +1 -0
- package/dist/{federation-db-w8e-sKjp.mjs → federation-db-BTyoufBh.mjs} +2 -2
- package/dist/{federation-db-w8e-sKjp.mjs.map → federation-db-BTyoufBh.mjs.map} +1 -1
- package/dist/federation-db-HfIFc7FG.mjs +3 -0
- package/dist/{helpers-Dj-B314s.mjs → helpers-BRCJg0G3.mjs} +2 -208
- package/dist/helpers-BRCJg0G3.mjs.map +1 -0
- package/dist/hooks/block-sleep-poll.mjs +36 -11
- package/dist/hooks/block-sleep-poll.mjs.map +2 -2
- package/dist/hooks/capture-all-events.mjs +3 -17
- package/dist/hooks/capture-all-events.mjs.map +3 -3
- package/dist/hooks/capture-session-summary.mjs +3 -17
- package/dist/hooks/capture-session-summary.mjs.map +3 -3
- package/dist/hooks/capture-tool-output.mjs +3 -17
- package/dist/hooks/capture-tool-output.mjs.map +3 -3
- package/dist/hooks/cleanup-session-files.mjs +3 -17
- package/dist/hooks/cleanup-session-files.mjs.map +2 -2
- package/dist/hooks/context-compression-hook.mjs +3 -17
- package/dist/hooks/context-compression-hook.mjs.map +3 -3
- package/dist/hooks/initialize-session.mjs +3 -17
- package/dist/hooks/initialize-session.mjs.map +2 -2
- package/dist/hooks/inject-observations.mjs +3 -17
- package/dist/hooks/inject-observations.mjs.map +2 -2
- package/dist/hooks/load-core-context.mjs +4 -22
- package/dist/hooks/load-core-context.mjs.map +2 -2
- package/dist/hooks/load-project-context.mjs +3 -17
- package/dist/hooks/load-project-context.mjs.map +3 -3
- package/dist/hooks/mcp-deferred-gate.mjs +3 -17
- package/dist/hooks/mcp-deferred-gate.mjs.map +2 -2
- package/dist/hooks/observe.mjs +3 -17
- package/dist/hooks/observe.mjs.map +2 -2
- package/dist/hooks/security-validator.mjs +3 -17
- package/dist/hooks/security-validator.mjs.map +3 -3
- package/dist/hooks/stop-hook.mjs +3 -17
- package/dist/hooks/stop-hook.mjs.map +3 -3
- package/dist/hooks/sync-todo-to-md.mjs +3 -17
- package/dist/hooks/sync-todo-to-md.mjs.map +2 -2
- package/dist/hooks/worker-guard.mjs.map +2 -2
- package/dist/hooks/worker-status-line.mjs +4 -4
- package/dist/hooks/worker-status-line.mjs.map +2 -2
- package/dist/index.d.mts +26 -8
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +5 -4
- package/dist/indexer-backend-Cnc7Tf5C.mjs +5 -0
- package/dist/{ipc-client-Dasm515c.mjs → ipc-client-D16Xw6Uo.mjs} +2 -2
- package/dist/{ipc-client-Dasm515c.mjs.map → ipc-client-D16Xw6Uo.mjs.map} +1 -1
- package/dist/{kg-entity-Cj8Q6YmU.mjs → kg-entity-COTUj1ZC.mjs} +1 -1
- package/dist/{kg-entity-Cj8Q6YmU.mjs.map → kg-entity-COTUj1ZC.mjs.map} +1 -1
- package/dist/{latent-ideas-BRy6HNwg.mjs → latent-ideas-ByvMjVcb.mjs} +4 -4
- package/dist/{latent-ideas-BRy6HNwg.mjs.map → latent-ideas-ByvMjVcb.mjs.map} +1 -1
- package/dist/{link-boost-BptbAPuv.mjs → link-boost-UiE-uooT.mjs} +1 -1
- package/dist/{link-boost-BptbAPuv.mjs.map → link-boost-UiE-uooT.mjs.map} +1 -1
- package/dist/{main-resolver-BIft_FVF.mjs → main-resolver-CDe7DCso.mjs} +6 -6
- package/dist/{main-resolver-BIft_FVF.mjs.map → main-resolver-CDe7DCso.mjs.map} +1 -1
- package/dist/main-resolver-DI-A7lSO.mjs +7 -0
- package/dist/merge-2gqRPFu2.mjs +3 -0
- package/dist/{merge-xoyfZQ4W.mjs → merge-DgU9OgZy.mjs} +1 -1
- package/dist/{merge-xoyfZQ4W.mjs.map → merge-DgU9OgZy.mjs.map} +1 -1
- package/dist/module-paths-DdRzbkUI.mjs +44 -0
- package/dist/module-paths-DdRzbkUI.mjs.map +1 -0
- package/dist/{neighborhood-D8uscnGy.mjs → neighborhood-CvRHlqdR.mjs} +2 -2
- package/dist/{neighborhood-D8uscnGy.mjs.map → neighborhood-CvRHlqdR.mjs.map} +1 -1
- package/dist/{note-context-CgffaUMh.mjs → note-context-BrbfUIoP.mjs} +1 -1
- package/dist/{note-context-CgffaUMh.mjs.map → note-context-BrbfUIoP.mjs.map} +1 -1
- package/dist/{pai-home-CeOIYltV.mjs → pai-home-Cm9rcJgX.mjs} +1 -1
- package/dist/{pai-home-CeOIYltV.mjs.map → pai-home-Cm9rcJgX.mjs.map} +1 -1
- package/dist/{planner-DAQMTMjP.mjs → planner-8-shIa8t.mjs} +7 -7
- package/dist/{planner-DAQMTMjP.mjs.map → planner-8-shIa8t.mjs.map} +1 -1
- package/dist/{postgres-CxD6_Dca.mjs → postgres-DYtZg7J7.mjs} +8 -15
- package/dist/{postgres-CxD6_Dca.mjs.map → postgres-DYtZg7J7.mjs.map} +1 -1
- package/dist/{program-De1GVVM4.mjs → program-DiktbiWa.mjs} +229 -249
- package/dist/program-DiktbiWa.mjs.map +1 -0
- package/dist/{query-feedback-xz5axTj3.mjs → query-feedback-BIaZTTFO.mjs} +2 -2
- package/dist/{query-feedback-xz5axTj3.mjs.map → query-feedback-BIaZTTFO.mjs.map} +1 -1
- package/dist/query-feedback-B_iigYj-.mjs +3 -0
- package/dist/{registry-db-Bkpbp7Gf.mjs → registry-db-C7voqML9.mjs} +2 -2
- package/dist/{registry-db-Bkpbp7Gf.mjs.map → registry-db-C7voqML9.mjs.map} +1 -1
- package/dist/registry-db-JHPhA8vF.mjs +3 -0
- package/dist/{registry-postgres-B07-hmn8.mjs → registry-postgres-DSrkxqfF.mjs} +2 -2
- package/dist/{registry-postgres-B07-hmn8.mjs.map → registry-postgres-DSrkxqfF.mjs.map} +1 -1
- package/dist/{registry-sqlite-CkGND_tm.mjs → registry-sqlite-B2436JgX.mjs} +2 -2
- package/dist/{registry-sqlite-CkGND_tm.mjs.map → registry-sqlite-B2436JgX.mjs.map} +1 -1
- package/dist/{reranker-BS5gqGeF.mjs → reranker-CFiEzHQu.mjs} +1 -1
- package/dist/{reranker-CRVawoEh.mjs → reranker-DKv80KO5.mjs} +1 -1
- package/dist/{reranker-CRVawoEh.mjs.map → reranker-DKv80KO5.mjs.map} +1 -1
- package/dist/router-S6C5BxzZ.mjs +3 -0
- package/dist/{router-DjFZIoDl.mjs → router-aqLMvNMg.mjs} +1 -1
- package/dist/{router-DjFZIoDl.mjs.map → router-aqLMvNMg.mjs.map} +1 -1
- package/dist/{run-CZVCCvXE.mjs → run-DUZRSnIT.mjs} +120 -42
- package/dist/run-DUZRSnIT.mjs.map +1 -0
- package/dist/{run-env-BE5xyCwy.mjs → run-env-BHWnXqle.mjs} +3 -3
- package/dist/{run-env-BE5xyCwy.mjs.map → run-env-BHWnXqle.mjs.map} +1 -1
- package/dist/{runtime-paths-BRwDeBEg.mjs → runtime-paths-CHTg3ywb.mjs} +1 -1
- package/dist/{runtime-paths-BRwDeBEg.mjs.map → runtime-paths-CHTg3ywb.mjs.map} +1 -1
- package/dist/{search-BaTbyWjK.mjs → search-BOSphCJ1.mjs} +2 -2
- package/dist/{search-BaTbyWjK.mjs.map → search-BOSphCJ1.mjs.map} +1 -1
- package/dist/search-Bf3Kub3F.mjs +3 -0
- package/dist/{server-BY6AedmC.mjs → server-DlL1QI2k.mjs} +4 -5
- package/dist/server-DlL1QI2k.mjs.map +1 -0
- package/dist/{session-keepalive-CWGzLBVU.mjs → session-keepalive-CZUwp5IQ.mjs} +7 -7
- package/dist/{session-keepalive-CWGzLBVU.mjs.map → session-keepalive-CZUwp5IQ.mjs.map} +1 -1
- package/dist/skills/Art/SKILL.md +1 -1
- package/dist/skills/Observability/SKILL.md +4 -4
- package/dist/skills/Research/SKILL.md +1 -1
- package/dist/{sources-BBe3AZ-W.mjs → sources-DX4ElmrE.mjs} +1 -1
- package/dist/{sources-BBe3AZ-W.mjs.map → sources-DX4ElmrE.mjs.map} +1 -1
- package/dist/{sqlite-CfKfuggn.mjs → sqlite-BrEu3avy.mjs} +8 -7
- package/dist/sqlite-BrEu3avy.mjs.map +1 -0
- package/dist/{state-CwlGAKgF.mjs → state-DW8zdweW.mjs} +1 -1
- package/dist/{state-n13uPK5B.mjs → state-HyjqTihC.mjs} +1 -1
- package/dist/{state-n13uPK5B.mjs.map → state-HyjqTihC.mjs.map} +1 -1
- package/dist/{stop-words-ClCwO8mZ.mjs → stop-words-BdQuaE9K.mjs} +1 -1
- package/dist/{stop-words-ClCwO8mZ.mjs.map → stop-words-BdQuaE9K.mjs.map} +1 -1
- package/dist/{themes-B2v7RNnA.mjs → themes-BgqahYVM.mjs} +3 -3
- package/dist/{themes-B2v7RNnA.mjs.map → themes-BgqahYVM.mjs.map} +1 -1
- package/dist/tools-BbqQIHPe.mjs +6 -0
- package/dist/{tools-DFdPbX-X.mjs → tools-gMGDIpJ9.mjs} +84 -68
- package/dist/tools-gMGDIpJ9.mjs.map +1 -0
- package/dist/{trace-BRflVyBi.mjs → trace-CmAB7iJZ.mjs} +1 -1
- package/dist/{trace-BRflVyBi.mjs.map → trace-CmAB7iJZ.mjs.map} +1 -1
- package/dist/{vault-indexer-mCFus_AM.mjs → vault-indexer-Ddq51X20.mjs} +4 -3
- package/dist/vault-indexer-Ddq51X20.mjs.map +1 -0
- package/dist/{wakeup-DO1O4udw.mjs → wakeup-CZw88uXf.mjs} +3 -3
- package/dist/{wakeup-DO1O4udw.mjs.map → wakeup-CZw88uXf.mjs.map} +1 -1
- package/dist/{work-queue-worker-BbrC3I_R.mjs → work-queue-worker-DCzfH0d1.mjs} +4 -4
- package/dist/{work-queue-worker-BbrC3I_R.mjs.map → work-queue-worker-DCzfH0d1.mjs.map} +1 -1
- package/dist/work-queue-worker-Taba_vcA.mjs +11 -0
- package/dist/{zettelkasten-BPxSOalU.mjs → zettelkasten-Dwj67e4p.mjs} +4 -4
- package/dist/{zettelkasten-BPxSOalU.mjs.map → zettelkasten-Dwj67e4p.mjs.map} +1 -1
- package/docker/docker-compose.yml +39 -0
- package/docs/commands/README.md +3 -3
- package/docs/commands/config.md +3 -3
- package/docs/commands/setup.md +9 -2
- package/docs/commands/worker.md +2 -2
- package/gemini-extension.json +1 -1
- package/package.json +3 -2
- package/pai-plugin.json +1 -0
- package/scripts/build-hooks.mjs +6 -6
- package/src/hooks/ts/lib/pai-paths-case.test.ts +12 -0
- package/src/hooks/ts/lib/pai-paths-import.test.ts +25 -0
- package/src/hooks/ts/lib/pai-paths.ts +5 -28
- package/src/hooks/ts/lib/sleep-poll-gate.test.ts +17 -1
- package/src/hooks/ts/lib/sleep-poll-gate.ts +21 -9
- package/src/hooks/ts/session-start/load-core-context.ts +2 -6
- package/src/hooks/ts/session-start/session-start-worker-guard.test.ts +24 -1
- package/dist/async-DNVWtQl2.mjs.map +0 -1
- package/dist/context-handover-cache-DFNnlWv2.mjs.map +0 -1
- package/dist/daemon-C8-uzOuV.mjs +0 -19
- package/dist/detector-DgDn56j-.mjs +0 -3
- package/dist/fallback-ktbR0aR7.mjs.map +0 -1
- package/dist/federation-db-CJDw_Pwq.mjs +0 -3
- package/dist/helpers-Dj-B314s.mjs.map +0 -1
- package/dist/indexer-backend-BN9rpp9O.mjs +0 -5
- package/dist/main-resolver-C9-poMdi.mjs +0 -7
- package/dist/merge-BncjJTfb.mjs +0 -3
- package/dist/program-De1GVVM4.mjs.map +0 -1
- package/dist/query-feedback-COYCnvHQ.mjs +0 -3
- package/dist/registry-db-DwXpf7yF.mjs +0 -3
- package/dist/router-C5hPk9YP.mjs +0 -3
- package/dist/run-CZVCCvXE.mjs.map +0 -1
- package/dist/search-BQHL5wDr.mjs +0 -3
- package/dist/server-BY6AedmC.mjs.map +0 -1
- package/dist/sqlite-CfKfuggn.mjs.map +0 -1
- package/dist/tools-B52IvaU6.mjs +0 -6
- package/dist/tools-DFdPbX-X.mjs.map +0 -1
- package/dist/vault-indexer-mCFus_AM.mjs.map +0 -1
- package/dist/work-queue-worker-z-AATZ2t.mjs +0 -11
- /package/dist/{indexer-backend-Cc-_NK3q.mjs → indexer-backend-isSLg6yE.mjs} +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import "../factory-
|
|
3
|
-
import { p as MainConfigError, s as loadConfig } from "../config-
|
|
4
|
-
import { E as readWorkersSection, i as CAPABILITY_NAME_RE, u as MODEL_CAPABILITIES, y as getProviderOrNative } from "../run-env-
|
|
5
|
-
import { A as ledgerSummary, B as loadStatuses, G as setWorkerLabel, N as alive, c as readInbox, l as sayToWorker, n as runWorker, r as testProvider, s as handoffFromInside, z as loadStatus } from "../run-
|
|
6
|
-
import { t as PaiClient } from "../ipc-client-
|
|
7
|
-
import { A as getConfigValueOp, C as
|
|
8
|
-
import { h as ledgerPath, v as workersLogDir } from "../server-
|
|
9
|
-
import { t as runChain } from "../chain-
|
|
2
|
+
import "../factory-y36qGegI.mjs";
|
|
3
|
+
import { p as MainConfigError, s as loadConfig } from "../config-BbLFD7Uf.mjs";
|
|
4
|
+
import { E as readWorkersSection, i as CAPABILITY_NAME_RE, u as MODEL_CAPABILITIES, y as getProviderOrNative } from "../run-env-BHWnXqle.mjs";
|
|
5
|
+
import { A as ledgerSummary, B as loadStatuses, G as setWorkerLabel, N as alive, c as readInbox, l as sayToWorker, n as runWorker, r as testProvider, s as handoffFromInside, z as loadStatus } from "../run-DUZRSnIT.mjs";
|
|
6
|
+
import { t as PaiClient } from "../ipc-client-D16Xw6Uo.mjs";
|
|
7
|
+
import { A as getConfigValueOp, C as setWorkersEnabled, D as useProvider, E as updateProvider, M as setConfigValueOp, N as unsetConfigValueOp, O as MainConfigOpsError, S as setProviderModel, T as unsetClass, _ as removeProvider, b as setClass, d as addProvider, f as classTargetText, g as modelPrefsText, h as describeProviders, i as fallbackStatusText, j as listConfigOp, l as readSpecPrompt, m as describeModels, n as fallbackOn, o as psOutput, p as describeCapabilities, r as fallbackStatus, s as replayOutput, t as fallbackOff, u as resolveSpecPath, v as resolveProviderName, w as unsetCapabilityPreference, x as setProviderEnabled, y as setCapabilityPreference } from "../fallback-CWDQYmJi.mjs";
|
|
8
|
+
import { h as ledgerPath, v as workersLogDir } from "../server-DlL1QI2k.mjs";
|
|
9
|
+
import { t as runChain } from "../chain-C8QO8gwj.mjs";
|
|
10
10
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
11
11
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
12
12
|
|
|
@@ -3704,10 +3704,10 @@ USE WHEN user says 'start observability', 'stop dashboard', 'restart observabili
|
|
|
3704
3704
|
### Commands
|
|
3705
3705
|
|
|
3706
3706
|
\`\`\`bash
|
|
3707
|
-
~/.claude/
|
|
3708
|
-
~/.claude/
|
|
3709
|
-
~/.claude/
|
|
3710
|
-
~/.claude/
|
|
3707
|
+
~/.claude/skills/observability/manage.sh start # Start server + dashboard
|
|
3708
|
+
~/.claude/skills/observability/manage.sh stop # Stop everything
|
|
3709
|
+
~/.claude/skills/observability/manage.sh restart # Restart both
|
|
3710
|
+
~/.claude/skills/observability/manage.sh status # Check status
|
|
3711
3711
|
\`\`\`
|
|
3712
3712
|
|
|
3713
3713
|
### Access
|
|
@@ -3739,7 +3739,7 @@ USE WHEN user says 'do research', 'extract wisdom', 'analyze content', 'find inf
|
|
|
3739
3739
|
|
|
3740
3740
|
### Workflow Routing
|
|
3741
3741
|
|
|
3742
|
-
- Parallel research → read \`\${PAI_DIR}/
|
|
3742
|
+
- Parallel research → read \`\${PAI_DIR}/skills/research/workflows/conduct.md\`
|
|
3743
3743
|
- Claude research (free) → \`workflows/claude-research.md\`
|
|
3744
3744
|
- Blocked content / CAPTCHA → escalate: WebFetch → BrightData → Apify
|
|
3745
3745
|
- YouTube URL → \`fabric -y <URL>\` then pattern
|
|
@@ -3780,7 +3780,7 @@ Tron-meets-Excalidraw — dark slate backgrounds, neon orange + cyan accents, ha
|
|
|
3780
3780
|
|
|
3781
3781
|
### Image Generation
|
|
3782
3782
|
|
|
3783
|
-
\`bun run \${PAI_DIR}/
|
|
3783
|
+
\`bun run \${PAI_DIR}/skills/art/tools/generate-ulart-image.ts --model nano-banana-pro --prompt "[PROMPT]" --size 2K\``
|
|
3784
3784
|
};
|
|
3785
3785
|
|
|
3786
3786
|
//#endregion
|
|
@@ -4707,7 +4707,7 @@ User
|
|
|
4707
4707
|
| Primitive | Location | Purpose |
|
|
4708
4708
|
|-----------|----------|---------|
|
|
4709
4709
|
| Memory | \${PAI_DIR}/projects/*/Notes/ | Session notes, todos |
|
|
4710
|
-
| Skills | ~/.claude/
|
|
4710
|
+
| Skills | ~/.claude/skills/ | Workflow instructions |
|
|
4711
4711
|
| History | \${PAI_HOME}/History/ | Automated capture |
|
|
4712
4712
|
| Config | ~/.claude/pai/ | Agent preferences (config.yaml, workers.yaml, etc.) |
|
|
4713
4713
|
|
|
@@ -4720,7 +4720,7 @@ User
|
|
|
4720
4720
|
|
|
4721
4721
|
\`\`\`
|
|
4722
4722
|
~/.claude/
|
|
4723
|
-
├──
|
|
4723
|
+
├── skills/
|
|
4724
4724
|
│ ├── CORE/ # PAI core skill (auto-loaded at session start)
|
|
4725
4725
|
│ └── user/ # Personal custom skills (gitignored)
|
|
4726
4726
|
├── Hooks/ # Event-driven automation scripts
|
|
@@ -5320,7 +5320,7 @@ USE WHEN user says 'journal'...
|
|
|
5320
5320
|
|
|
5321
5321
|
\`\`\`
|
|
5322
5322
|
// WRONG — hardcoded personal paths
|
|
5323
|
-
"Read ~/.claude/
|
|
5323
|
+
"Read ~/.claude/skills/Share/SKILL.md for social media instructions"
|
|
5324
5324
|
\`\`\`
|
|
5325
5325
|
|
|
5326
5326
|
**Problem:** Paths are personal, not portable. The file may not exist. Reading a file wastes a tool call.
|
|
@@ -5627,7 +5627,7 @@ function workerCapability(args, configPath) {
|
|
|
5627
5627
|
* database connections and embedding model singleton.
|
|
5628
5628
|
*
|
|
5629
5629
|
* Tool definitions are static (unlike Coogle which discovers tools dynamically).
|
|
5630
|
-
* The
|
|
5630
|
+
* The 10 PAI tools are: memory_search, memory_get, memory_outline, project_info, project_list,
|
|
5631
5631
|
* session_list, registry_search, project_detect, project_health, project_todo.
|
|
5632
5632
|
*
|
|
5633
5633
|
* If the daemon is not running, tool calls return a helpful error message
|
|
@@ -5747,7 +5747,7 @@ async function startShim() {
|
|
|
5747
5747
|
"Higher score = more relevant.",
|
|
5748
5748
|
"",
|
|
5749
5749
|
"Token-efficient workflow: use format='compact' first (~50 tokens/result),",
|
|
5750
|
-
"then memory_get on interesting results for full content. ~10x token savings."
|
|
5750
|
+
"then memory_get on interesting results for full content (memory_outline lists a file's sections). ~10x token savings."
|
|
5751
5751
|
].join("\n"), {
|
|
5752
5752
|
query: string().describe("Free-text search query. Multiple words are ORed together — any matching word returns a result, ranked by relevance."),
|
|
5753
5753
|
project: string().optional().describe("Scope search to a single project by slug. Omit to search all projects."),
|
|
@@ -5767,7 +5767,7 @@ async function startShim() {
|
|
|
5767
5767
|
"Read the content of a specific file from a registered PAI project.",
|
|
5768
5768
|
"",
|
|
5769
5769
|
"Use this to read a full memory file, session note, or document after finding",
|
|
5770
|
-
"it via memory_search. Optionally restrict to a line range.",
|
|
5770
|
+
"it via memory_search. Optionally restrict to a line range (see memory_outline for section line ranges).",
|
|
5771
5771
|
"",
|
|
5772
5772
|
"The path must be a relative path within the project root (no ../ traversal)."
|
|
5773
5773
|
].join("\n"), {
|
|
@@ -5776,6 +5776,15 @@ async function startShim() {
|
|
|
5776
5776
|
from: number().int().min(1).optional().describe("Starting line number (1-based, inclusive). Default: 1."),
|
|
5777
5777
|
lines: number().int().min(1).optional().describe("Number of lines to return. Default: entire file.")
|
|
5778
5778
|
}, async (args) => proxyTool("memory_get", args));
|
|
5779
|
+
server.tool("memory_outline", [
|
|
5780
|
+
"Heading tree of one project file: level, title, line range, ~tokens per section.",
|
|
5781
|
+
"No text. Pick a section, then read just those lines with memory_get (from, lines).",
|
|
5782
|
+
"Same project/path rules as memory_get."
|
|
5783
|
+
].join("\n"), {
|
|
5784
|
+
project: string().describe("Project slug identifying which project's files to read from."),
|
|
5785
|
+
path: string().describe("Relative path within the project root (e.g. 'Notes/TODO.md')."),
|
|
5786
|
+
max_depth: number().int().min(1).optional().describe("Limit nesting depth (1 = top-level headings only). Default: all.")
|
|
5787
|
+
}, async (args) => proxyTool("memory_outline", args));
|
|
5779
5788
|
server.tool("project_info", [
|
|
5780
5789
|
"Get detailed information about a PAI registered project.",
|
|
5781
5790
|
"",
|