@oh-my-pi/pi-coding-agent 1.337.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/CHANGELOG.md +1228 -0
- package/README.md +1041 -0
- package/docs/compaction.md +403 -0
- package/docs/custom-tools.md +541 -0
- package/docs/extension-loading.md +1004 -0
- package/docs/hooks.md +867 -0
- package/docs/rpc.md +1040 -0
- package/docs/sdk.md +994 -0
- package/docs/session-tree-plan.md +441 -0
- package/docs/session.md +240 -0
- package/docs/skills.md +290 -0
- package/docs/theme.md +637 -0
- package/docs/tree.md +197 -0
- package/docs/tui.md +341 -0
- package/examples/README.md +21 -0
- package/examples/custom-tools/README.md +124 -0
- package/examples/custom-tools/hello/index.ts +20 -0
- package/examples/custom-tools/question/index.ts +84 -0
- package/examples/custom-tools/subagent/README.md +172 -0
- package/examples/custom-tools/subagent/agents/planner.md +37 -0
- package/examples/custom-tools/subagent/agents/reviewer.md +35 -0
- package/examples/custom-tools/subagent/agents/scout.md +50 -0
- package/examples/custom-tools/subagent/agents/worker.md +24 -0
- package/examples/custom-tools/subagent/agents.ts +156 -0
- package/examples/custom-tools/subagent/commands/implement-and-review.md +10 -0
- package/examples/custom-tools/subagent/commands/implement.md +10 -0
- package/examples/custom-tools/subagent/commands/scout-and-plan.md +9 -0
- package/examples/custom-tools/subagent/index.ts +1002 -0
- package/examples/custom-tools/todo/index.ts +212 -0
- package/examples/hooks/README.md +56 -0
- package/examples/hooks/auto-commit-on-exit.ts +49 -0
- package/examples/hooks/confirm-destructive.ts +59 -0
- package/examples/hooks/custom-compaction.ts +116 -0
- package/examples/hooks/dirty-repo-guard.ts +52 -0
- package/examples/hooks/file-trigger.ts +41 -0
- package/examples/hooks/git-checkpoint.ts +53 -0
- package/examples/hooks/handoff.ts +150 -0
- package/examples/hooks/permission-gate.ts +34 -0
- package/examples/hooks/protected-paths.ts +30 -0
- package/examples/hooks/qna.ts +119 -0
- package/examples/hooks/snake.ts +343 -0
- package/examples/hooks/status-line.ts +40 -0
- package/examples/sdk/01-minimal.ts +22 -0
- package/examples/sdk/02-custom-model.ts +49 -0
- package/examples/sdk/03-custom-prompt.ts +44 -0
- package/examples/sdk/04-skills.ts +44 -0
- package/examples/sdk/05-tools.ts +90 -0
- package/examples/sdk/06-hooks.ts +61 -0
- package/examples/sdk/07-context-files.ts +36 -0
- package/examples/sdk/08-slash-commands.ts +42 -0
- package/examples/sdk/09-api-keys-and-oauth.ts +55 -0
- package/examples/sdk/10-settings.ts +38 -0
- package/examples/sdk/11-sessions.ts +48 -0
- package/examples/sdk/12-full-control.ts +95 -0
- package/examples/sdk/README.md +154 -0
- package/package.json +81 -0
- package/src/cli/args.ts +246 -0
- package/src/cli/file-processor.ts +72 -0
- package/src/cli/list-models.ts +104 -0
- package/src/cli/plugin-cli.ts +650 -0
- package/src/cli/session-picker.ts +41 -0
- package/src/cli.ts +10 -0
- package/src/commands/init.md +20 -0
- package/src/config.ts +159 -0
- package/src/core/agent-session.ts +1900 -0
- package/src/core/auth-storage.ts +236 -0
- package/src/core/bash-executor.ts +196 -0
- package/src/core/compaction/branch-summarization.ts +343 -0
- package/src/core/compaction/compaction.ts +742 -0
- package/src/core/compaction/index.ts +7 -0
- package/src/core/compaction/utils.ts +154 -0
- package/src/core/custom-tools/index.ts +21 -0
- package/src/core/custom-tools/loader.ts +248 -0
- package/src/core/custom-tools/types.ts +169 -0
- package/src/core/custom-tools/wrapper.ts +28 -0
- package/src/core/exec.ts +129 -0
- package/src/core/export-html/index.ts +211 -0
- package/src/core/export-html/template.css +781 -0
- package/src/core/export-html/template.html +54 -0
- package/src/core/export-html/template.js +1185 -0
- package/src/core/export-html/vendor/highlight.min.js +1213 -0
- package/src/core/export-html/vendor/marked.min.js +6 -0
- package/src/core/hooks/index.ts +16 -0
- package/src/core/hooks/loader.ts +312 -0
- package/src/core/hooks/runner.ts +434 -0
- package/src/core/hooks/tool-wrapper.ts +99 -0
- package/src/core/hooks/types.ts +773 -0
- package/src/core/index.ts +52 -0
- package/src/core/mcp/client.ts +158 -0
- package/src/core/mcp/config.ts +154 -0
- package/src/core/mcp/index.ts +45 -0
- package/src/core/mcp/loader.ts +68 -0
- package/src/core/mcp/manager.ts +181 -0
- package/src/core/mcp/tool-bridge.ts +148 -0
- package/src/core/mcp/transports/http.ts +316 -0
- package/src/core/mcp/transports/index.ts +6 -0
- package/src/core/mcp/transports/stdio.ts +252 -0
- package/src/core/mcp/types.ts +220 -0
- package/src/core/messages.ts +189 -0
- package/src/core/model-registry.ts +317 -0
- package/src/core/model-resolver.ts +393 -0
- package/src/core/plugins/doctor.ts +59 -0
- package/src/core/plugins/index.ts +38 -0
- package/src/core/plugins/installer.ts +189 -0
- package/src/core/plugins/loader.ts +338 -0
- package/src/core/plugins/manager.ts +672 -0
- package/src/core/plugins/parser.ts +105 -0
- package/src/core/plugins/paths.ts +32 -0
- package/src/core/plugins/types.ts +190 -0
- package/src/core/sdk.ts +760 -0
- package/src/core/session-manager.ts +1128 -0
- package/src/core/settings-manager.ts +443 -0
- package/src/core/skills.ts +437 -0
- package/src/core/slash-commands.ts +248 -0
- package/src/core/system-prompt.ts +439 -0
- package/src/core/timings.ts +25 -0
- package/src/core/tools/ask.ts +211 -0
- package/src/core/tools/bash-interceptor.ts +120 -0
- package/src/core/tools/bash.ts +250 -0
- package/src/core/tools/context.ts +32 -0
- package/src/core/tools/edit-diff.ts +475 -0
- package/src/core/tools/edit.ts +208 -0
- package/src/core/tools/exa/company.ts +59 -0
- package/src/core/tools/exa/index.ts +64 -0
- package/src/core/tools/exa/linkedin.ts +59 -0
- package/src/core/tools/exa/logger.ts +56 -0
- package/src/core/tools/exa/mcp-client.ts +368 -0
- package/src/core/tools/exa/render.ts +196 -0
- package/src/core/tools/exa/researcher.ts +90 -0
- package/src/core/tools/exa/search.ts +337 -0
- package/src/core/tools/exa/types.ts +168 -0
- package/src/core/tools/exa/websets.ts +248 -0
- package/src/core/tools/find.ts +261 -0
- package/src/core/tools/grep.ts +555 -0
- package/src/core/tools/index.ts +202 -0
- package/src/core/tools/ls.ts +140 -0
- package/src/core/tools/lsp/client.ts +605 -0
- package/src/core/tools/lsp/config.ts +147 -0
- package/src/core/tools/lsp/edits.ts +101 -0
- package/src/core/tools/lsp/index.ts +804 -0
- package/src/core/tools/lsp/render.ts +447 -0
- package/src/core/tools/lsp/rust-analyzer.ts +145 -0
- package/src/core/tools/lsp/types.ts +463 -0
- package/src/core/tools/lsp/utils.ts +486 -0
- package/src/core/tools/notebook.ts +229 -0
- package/src/core/tools/path-utils.ts +61 -0
- package/src/core/tools/read.ts +240 -0
- package/src/core/tools/renderers.ts +540 -0
- package/src/core/tools/task/agents.ts +153 -0
- package/src/core/tools/task/artifacts.ts +114 -0
- package/src/core/tools/task/bundled-agents/browser.md +71 -0
- package/src/core/tools/task/bundled-agents/explore.md +82 -0
- package/src/core/tools/task/bundled-agents/plan.md +54 -0
- package/src/core/tools/task/bundled-agents/reviewer.md +59 -0
- package/src/core/tools/task/bundled-agents/task.md +53 -0
- package/src/core/tools/task/bundled-commands/architect-plan.md +10 -0
- package/src/core/tools/task/bundled-commands/implement-with-critic.md +11 -0
- package/src/core/tools/task/bundled-commands/implement.md +11 -0
- package/src/core/tools/task/commands.ts +213 -0
- package/src/core/tools/task/discovery.ts +208 -0
- package/src/core/tools/task/executor.ts +367 -0
- package/src/core/tools/task/index.ts +388 -0
- package/src/core/tools/task/model-resolver.ts +115 -0
- package/src/core/tools/task/parallel.ts +38 -0
- package/src/core/tools/task/render.ts +232 -0
- package/src/core/tools/task/types.ts +99 -0
- package/src/core/tools/truncate.ts +265 -0
- package/src/core/tools/web-fetch.ts +2370 -0
- package/src/core/tools/web-search/auth.ts +193 -0
- package/src/core/tools/web-search/index.ts +537 -0
- package/src/core/tools/web-search/providers/anthropic.ts +198 -0
- package/src/core/tools/web-search/providers/exa.ts +302 -0
- package/src/core/tools/web-search/providers/perplexity.ts +195 -0
- package/src/core/tools/web-search/render.ts +182 -0
- package/src/core/tools/web-search/types.ts +180 -0
- package/src/core/tools/write.ts +99 -0
- package/src/index.ts +176 -0
- package/src/main.ts +464 -0
- package/src/migrations.ts +135 -0
- package/src/modes/index.ts +43 -0
- package/src/modes/interactive/components/armin.ts +382 -0
- package/src/modes/interactive/components/assistant-message.ts +86 -0
- package/src/modes/interactive/components/bash-execution.ts +196 -0
- package/src/modes/interactive/components/bordered-loader.ts +41 -0
- package/src/modes/interactive/components/branch-summary-message.ts +42 -0
- package/src/modes/interactive/components/compaction-summary-message.ts +45 -0
- package/src/modes/interactive/components/custom-editor.ts +122 -0
- package/src/modes/interactive/components/diff.ts +147 -0
- package/src/modes/interactive/components/dynamic-border.ts +25 -0
- package/src/modes/interactive/components/footer.ts +381 -0
- package/src/modes/interactive/components/hook-editor.ts +117 -0
- package/src/modes/interactive/components/hook-input.ts +64 -0
- package/src/modes/interactive/components/hook-message.ts +96 -0
- package/src/modes/interactive/components/hook-selector.ts +91 -0
- package/src/modes/interactive/components/model-selector.ts +247 -0
- package/src/modes/interactive/components/oauth-selector.ts +120 -0
- package/src/modes/interactive/components/plugin-settings.ts +479 -0
- package/src/modes/interactive/components/queue-mode-selector.ts +56 -0
- package/src/modes/interactive/components/session-selector.ts +204 -0
- package/src/modes/interactive/components/settings-selector.ts +453 -0
- package/src/modes/interactive/components/show-images-selector.ts +45 -0
- package/src/modes/interactive/components/theme-selector.ts +62 -0
- package/src/modes/interactive/components/thinking-selector.ts +64 -0
- package/src/modes/interactive/components/tool-execution.ts +675 -0
- package/src/modes/interactive/components/tree-selector.ts +866 -0
- package/src/modes/interactive/components/user-message-selector.ts +159 -0
- package/src/modes/interactive/components/user-message.ts +18 -0
- package/src/modes/interactive/components/visual-truncate.ts +50 -0
- package/src/modes/interactive/components/welcome.ts +183 -0
- package/src/modes/interactive/interactive-mode.ts +2516 -0
- package/src/modes/interactive/theme/dark.json +101 -0
- package/src/modes/interactive/theme/light.json +98 -0
- package/src/modes/interactive/theme/theme-schema.json +308 -0
- package/src/modes/interactive/theme/theme.ts +998 -0
- package/src/modes/print-mode.ts +128 -0
- package/src/modes/rpc/rpc-client.ts +527 -0
- package/src/modes/rpc/rpc-mode.ts +483 -0
- package/src/modes/rpc/rpc-types.ts +203 -0
- package/src/utils/changelog.ts +99 -0
- package/src/utils/clipboard.ts +265 -0
- package/src/utils/fuzzy.ts +108 -0
- package/src/utils/mime.ts +30 -0
- package/src/utils/shell.ts +276 -0
- package/src/utils/tools-manager.ts +274 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: init
|
|
3
|
+
description: Generate AGENTS.md documentation for the current codebase
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Analyze this codebase and generate an AGENTS.md file that documents:
|
|
7
|
+
|
|
8
|
+
1. **Project Overview**: Brief description of what this project does
|
|
9
|
+
2. **Key Directories**: Main source directories and their purposes
|
|
10
|
+
3. **Development Commands**: How to build, test, lint the project
|
|
11
|
+
4. **Code Conventions**: Formatting, naming, patterns used
|
|
12
|
+
5. **Important Files**: Entry points, config files, key modules
|
|
13
|
+
|
|
14
|
+
Guidelines:
|
|
15
|
+
- Be concise and practical
|
|
16
|
+
- Focus on what an AI assistant needs to know to help with this codebase
|
|
17
|
+
- Include file paths where relevant
|
|
18
|
+
- Don't include information that's obvious from the code structure
|
|
19
|
+
|
|
20
|
+
After analysis, write the AGENTS.md file to the project root.
|
package/src/config.ts
ADDED
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from "fs";
|
|
2
|
+
import { homedir } from "os";
|
|
3
|
+
import { dirname, join, resolve } from "path";
|
|
4
|
+
|
|
5
|
+
// =============================================================================
|
|
6
|
+
// Package Detection
|
|
7
|
+
// =============================================================================
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Detect if we're running as a Bun compiled binary.
|
|
11
|
+
* Bun binaries have import.meta.url containing "$bunfs", "~BUN", or "%7EBUN" (Bun's virtual filesystem path)
|
|
12
|
+
*/
|
|
13
|
+
export const isBunBinary =
|
|
14
|
+
import.meta.url.includes("$bunfs") || import.meta.url.includes("~BUN") || import.meta.url.includes("%7EBUN");
|
|
15
|
+
|
|
16
|
+
// =============================================================================
|
|
17
|
+
// Package Asset Paths (shipped with executable)
|
|
18
|
+
// =============================================================================
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Get the base directory for resolving package assets (themes, package.json, README.md, CHANGELOG.md).
|
|
22
|
+
* - For Bun binary: returns the directory containing the executable
|
|
23
|
+
* - For Node.js (dist/): returns __dirname (the dist/ directory)
|
|
24
|
+
* - For tsx (src/): returns parent directory (the package root)
|
|
25
|
+
*/
|
|
26
|
+
export function getPackageDir(): string {
|
|
27
|
+
if (isBunBinary) {
|
|
28
|
+
// Bun binary: process.execPath points to the compiled executable
|
|
29
|
+
return dirname(process.execPath);
|
|
30
|
+
}
|
|
31
|
+
// Node.js: walk up from import.meta.dir until we find package.json
|
|
32
|
+
let dir = import.meta.dir;
|
|
33
|
+
while (dir !== dirname(dir)) {
|
|
34
|
+
if (existsSync(join(dir, "package.json"))) {
|
|
35
|
+
return dir;
|
|
36
|
+
}
|
|
37
|
+
dir = dirname(dir);
|
|
38
|
+
}
|
|
39
|
+
// Fallback (shouldn't happen)
|
|
40
|
+
return import.meta.dir;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Get path to built-in themes directory (shipped with package)
|
|
45
|
+
* - For Bun binary: theme/ next to executable
|
|
46
|
+
* - For Node.js (dist/): dist/modes/interactive/theme/
|
|
47
|
+
* - For tsx (src/): src/modes/interactive/theme/
|
|
48
|
+
*/
|
|
49
|
+
export function getThemesDir(): string {
|
|
50
|
+
if (isBunBinary) {
|
|
51
|
+
return join(dirname(process.execPath), "theme");
|
|
52
|
+
}
|
|
53
|
+
// Theme is in modes/interactive/theme/ relative to src/ or dist/
|
|
54
|
+
const packageDir = getPackageDir();
|
|
55
|
+
const srcOrDist = existsSync(join(packageDir, "src")) ? "src" : "dist";
|
|
56
|
+
return join(packageDir, srcOrDist, "modes", "interactive", "theme");
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Get path to HTML export template directory (shipped with package)
|
|
61
|
+
* - For Bun binary: export-html/ next to executable
|
|
62
|
+
* - For Node.js (dist/): dist/core/export-html/
|
|
63
|
+
* - For tsx (src/): src/core/export-html/
|
|
64
|
+
*/
|
|
65
|
+
export function getExportTemplateDir(): string {
|
|
66
|
+
if (isBunBinary) {
|
|
67
|
+
return join(dirname(process.execPath), "export-html");
|
|
68
|
+
}
|
|
69
|
+
const packageDir = getPackageDir();
|
|
70
|
+
const srcOrDist = existsSync(join(packageDir, "src")) ? "src" : "dist";
|
|
71
|
+
return join(packageDir, srcOrDist, "core", "export-html");
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/** Get path to package.json */
|
|
75
|
+
export function getPackageJsonPath(): string {
|
|
76
|
+
return join(getPackageDir(), "package.json");
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/** Get path to README.md */
|
|
80
|
+
export function getReadmePath(): string {
|
|
81
|
+
return resolve(join(getPackageDir(), "README.md"));
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/** Get path to docs directory */
|
|
85
|
+
export function getDocsPath(): string {
|
|
86
|
+
return resolve(join(getPackageDir(), "docs"));
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/** Get path to examples directory */
|
|
90
|
+
export function getExamplesPath(): string {
|
|
91
|
+
return resolve(join(getPackageDir(), "examples"));
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/** Get path to CHANGELOG.md */
|
|
95
|
+
export function getChangelogPath(): string {
|
|
96
|
+
return resolve(join(getPackageDir(), "CHANGELOG.md"));
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// =============================================================================
|
|
100
|
+
// App Config (from package.json piConfig)
|
|
101
|
+
// =============================================================================
|
|
102
|
+
|
|
103
|
+
const pkg = JSON.parse(readFileSync(getPackageJsonPath(), "utf-8"));
|
|
104
|
+
|
|
105
|
+
export const APP_NAME: string = pkg.piConfig?.name || "pi";
|
|
106
|
+
export const CONFIG_DIR_NAME: string = pkg.piConfig?.configDir || ".pi";
|
|
107
|
+
export const VERSION: string = pkg.version;
|
|
108
|
+
|
|
109
|
+
// e.g., PI_CODING_AGENT_DIR or TAU_CODING_AGENT_DIR
|
|
110
|
+
export const ENV_AGENT_DIR = `${APP_NAME.toUpperCase()}_CODING_AGENT_DIR`;
|
|
111
|
+
|
|
112
|
+
// =============================================================================
|
|
113
|
+
// User Config Paths (~/.pi/agent/*)
|
|
114
|
+
// =============================================================================
|
|
115
|
+
|
|
116
|
+
/** Get the agent config directory (e.g., ~/.pi/agent/) */
|
|
117
|
+
export function getAgentDir(): string {
|
|
118
|
+
return process.env[ENV_AGENT_DIR] || join(homedir(), CONFIG_DIR_NAME, "agent");
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/** Get path to user's custom themes directory */
|
|
122
|
+
export function getCustomThemesDir(): string {
|
|
123
|
+
return join(getAgentDir(), "themes");
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/** Get path to models.json */
|
|
127
|
+
export function getModelsPath(): string {
|
|
128
|
+
return join(getAgentDir(), "models.json");
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/** Get path to auth.json */
|
|
132
|
+
export function getAuthPath(): string {
|
|
133
|
+
return join(getAgentDir(), "auth.json");
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/** Get path to settings.json */
|
|
137
|
+
export function getSettingsPath(): string {
|
|
138
|
+
return join(getAgentDir(), "settings.json");
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/** Get path to tools directory */
|
|
142
|
+
export function getToolsDir(): string {
|
|
143
|
+
return join(getAgentDir(), "tools");
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/** Get path to slash commands directory */
|
|
147
|
+
export function getCommandsDir(): string {
|
|
148
|
+
return join(getAgentDir(), "commands");
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/** Get path to sessions directory */
|
|
152
|
+
export function getSessionsDir(): string {
|
|
153
|
+
return join(getAgentDir(), "sessions");
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/** Get path to debug log file */
|
|
157
|
+
export function getDebugLogPath(): string {
|
|
158
|
+
return join(getAgentDir(), `${APP_NAME}-debug.log`);
|
|
159
|
+
}
|