@ask-llm/plugin 0.13.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/.claude-plugin/plugin.json +20 -0
- package/.mcp.json +3 -0
- package/LICENSE +21 -0
- package/README.md +135 -0
- package/agents/antigravity-reviewer.md +139 -0
- package/agents/brainstorm-coordinator.md +305 -0
- package/agents/codex-reviewer.md +194 -0
- package/agents/codex-verifier.md +149 -0
- package/agents/fable-reviewer.md +44 -0
- package/agents/gemini-reviewer.md +130 -0
- package/agents/ollama-reviewer.md +131 -0
- package/agents/sol-reviewer.md +60 -0
- package/codex-pair-defaults.json +4 -0
- package/dist/antigravity-run.d.ts +3 -0
- package/dist/antigravity-run.d.ts.map +1 -0
- package/dist/antigravity-run.js +32 -0
- package/dist/antigravity-run.js.map +1 -0
- package/dist/codex-run.d.ts +3 -0
- package/dist/codex-run.d.ts.map +1 -0
- package/dist/codex-run.js +32 -0
- package/dist/codex-run.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +39 -0
- package/dist/index.js.map +1 -0
- package/dist/ollama-run.d.ts +3 -0
- package/dist/ollama-run.d.ts.map +1 -0
- package/dist/ollama-run.js +32 -0
- package/dist/ollama-run.js.map +1 -0
- package/dist/run.d.ts +3 -0
- package/dist/run.d.ts.map +1 -0
- package/dist/run.js +32 -0
- package/dist/run.js.map +1 -0
- package/hooks/hooks.json +55 -0
- package/package.json +104 -0
- package/pi/extensions/codex-pair.ts +870 -0
- package/pi/extensions/index.ts +13 -0
- package/pi/extensions/provider-tools.ts +241 -0
- package/pi/tsconfig.json +10 -0
- package/prompts/review.txt +75 -0
- package/scripts/codex-pair-debounce-worker.mjs +103 -0
- package/scripts/codex-pair-log.mjs +271 -0
- package/scripts/codex-pair-prompt-drain.mjs +81 -0
- package/scripts/codex-pair-session.mjs +194 -0
- package/scripts/codex-pair-stop-gate.mjs +271 -0
- package/scripts/codex-pair-watch.mjs +1525 -0
- package/scripts/lib/broker-lifecycle.mjs +575 -0
- package/scripts/lib/broker-rpc.mjs +203 -0
- package/scripts/lib/broker-transport.mjs +407 -0
- package/scripts/lib/broker.mjs +537 -0
- package/scripts/lib/debounce-state.mjs +208 -0
- package/scripts/lib/parser.d.mts +12 -0
- package/scripts/lib/parser.mjs +229 -0
- package/scripts/lib/process.mjs +39 -0
- package/scripts/lib/prompt.d.mts +8 -0
- package/scripts/lib/prompt.mjs +41 -0
- package/scripts/lib/session-registry.mjs +162 -0
- package/scripts/lib/state.d.mts +58 -0
- package/scripts/lib/state.mjs +733 -0
- package/scripts/lib/stop-gate.mjs +134 -0
- package/skills/antigravity-review/SKILL.md +49 -0
- package/skills/brainstorm/SKILL.md +105 -0
- package/skills/brainstorm-all/SKILL.md +43 -0
- package/skills/codex-image/SKILL.md +120 -0
- package/skills/codex-pair/SKILL.md +315 -0
- package/skills/codex-pair-ack/SKILL.md +64 -0
- package/skills/codex-pair-pause/SKILL.md +62 -0
- package/skills/codex-pair-resume/SKILL.md +52 -0
- package/skills/codex-review/SKILL.md +52 -0
- package/skills/codex-verify/SKILL.md +110 -0
- package/skills/compare/SKILL.md +151 -0
- package/skills/fable-review/SKILL.md +42 -0
- package/skills/gemini-review/SKILL.md +40 -0
- package/skills/multi-review/SKILL.md +182 -0
- package/skills/ollama-review/SKILL.md +40 -0
- package/skills/sol-review/SKILL.md +41 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sol-reviewer
|
|
3
|
+
description: Coordinates an isolated, read-only code review explicitly pinned to OpenAI GPT-5.6 Sol and reports only source-verified, high-confidence correctness findings.
|
|
4
|
+
model: opus
|
|
5
|
+
effort: high
|
|
6
|
+
color: blue
|
|
7
|
+
tools:
|
|
8
|
+
- Bash
|
|
9
|
+
- Glob
|
|
10
|
+
- Grep
|
|
11
|
+
- Read
|
|
12
|
+
- mcp__codex__ask-codex
|
|
13
|
+
- mcp__plugin_ask-llm_codex__ask-codex
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
<!-- PORTABLE-CONTRACT:START -->
|
|
17
|
+
## Portable contract
|
|
18
|
+
|
|
19
|
+
Review only the supplied changes with Codex explicitly pinned to GPT-5.6 Sol, high effort, and read-only sandbox. Verify every candidate against source, report only high-confidence correctness findings, and disclose any model or transport fallback.
|
|
20
|
+
<!-- PORTABLE-CONTRACT:END -->
|
|
21
|
+
|
|
22
|
+
<!-- HOST-ADAPTER:CLAUDE-CODE:START -->
|
|
23
|
+
## Claude Code adapter
|
|
24
|
+
|
|
25
|
+
The frontmatter and detailed implementation below define Claude Code subagent execution. Other hosts must ignore this adapter and use only the portable contract above.
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
You are a code review coordinator for a model-pinned OpenAI GPT-5.6 Sol review. Send the changes to Codex, then independently validate every candidate against the current source.
|
|
30
|
+
|
|
31
|
+
## Workflow
|
|
32
|
+
|
|
33
|
+
1. Inspect `git diff` and `git diff --cached`. Read each affected file around the changed lines.
|
|
34
|
+
2. Apply the nearest `CLAUDE.md` instructions and inspect any ADR explicitly cited by changed code.
|
|
35
|
+
3. Call `mcp__codex__ask-codex` with:
|
|
36
|
+
- `model: "gpt-5.6-sol"`
|
|
37
|
+
- `reasoningEffort: "high"`
|
|
38
|
+
- `preferred` unset
|
|
39
|
+
- a prompt containing the scoped conventions, relevant ADR summaries, and the diff
|
|
40
|
+
|
|
41
|
+
The tool name may be plugin-namespaced in some sessions (for example `mcp__plugin_ask-llm_codex__ask-codex`); any `ask-codex` MCP variant counts as the primary transport. If no `ask-codex` MCP tool is available in this subagent context, use the sanctioned CLI fallback, passing the same prompt on stdin:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
codex exec -m gpt-5.6-sol -c model_reasoning_effort="high" -s read-only --ignore-user-config --ignore-rules --skip-git-repo-check
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
The `-m` pin, the reasoning-effort override, and the `-s read-only` sandbox are load-bearing; never drop or substitute them. The `--ignore-user-config --ignore-rules --skip-git-repo-check` flags are equally load-bearing: they mirror what the project's MCP executor always passes, so a local `~/.codex/config.toml` cannot silently override the pinned model or reasoning effort. If the Sol invocation fails with a quota or rate-limit error, retry once with `-m "${ASK_CODEX_FALLBACK_MODEL:-gpt-5.6-terra}"` and all other flags identical, matching the MCP executor's configurable quota ladder (`ASK_CODEX_FALLBACK_MODEL` overrides the `gpt-5.6-terra` default there too), and disclose the fallback model exactly as you would on the MCP path. If the `codex` CLI is also unavailable, stop and report that the Sol review could not run. Do not review on another transport, on any model outside the Sol-to-fallback ladder, or in another sandbox mode.
|
|
48
|
+
4. Ask Sol for concrete correctness, security, data-loss, concurrency, resource-lifecycle, and compatibility failures with confidence scores and reproduction conditions.
|
|
49
|
+
5. Read the reported source locations and trace each reproduction path. Drop style preferences, speculative improvements, pre-existing issues, linter/type-checker findings, and behavior documented as intentional.
|
|
50
|
+
6. Report only validated findings with confidence of at least 80/100. Never invent findings to fill a report.
|
|
51
|
+
|
|
52
|
+
## Output
|
|
53
|
+
|
|
54
|
+
Lead with the highest-severity finding. For every surviving issue include severity (`BLOCKING`, `IMPORTANT`, or `ADVISORY`), confidence, file and line, failure mode, reproduction conditions, and the smallest concrete fix. State clearly when no high-confidence findings survive validation.
|
|
55
|
+
|
|
56
|
+
The explicit `model` argument is load-bearing: do not omit it or replace it with an environment-selected default. Disclose every fallback you take, not only model fallbacks: if the response reports a Terra quota fallback, disclose that the Sol review could not complete as pinned, and if you used the CLI transport fallback because no `ask-codex` MCP tool was available, state that the review ran through `codex exec` rather than MCP.
|
|
57
|
+
|
|
58
|
+
You have no edit tools. Remain read-only.
|
|
59
|
+
|
|
60
|
+
<!-- HOST-ADAPTER:CLAUDE-CODE:END -->
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"antigravity-run.d.ts","sourceRoot":"","sources":["../src/antigravity-run.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { executeAntigravityCLI } from "@ask-llm/antigravity-mcp/executor";
|
|
3
|
+
const args = process.argv.slice(2);
|
|
4
|
+
const prompt = args.join(" ");
|
|
5
|
+
async function readStdin() {
|
|
6
|
+
if (process.stdin.isTTY)
|
|
7
|
+
return "";
|
|
8
|
+
const chunks = [];
|
|
9
|
+
for await (const chunk of process.stdin) {
|
|
10
|
+
chunks.push(chunk);
|
|
11
|
+
}
|
|
12
|
+
return Buffer.concat(chunks).toString().trim();
|
|
13
|
+
}
|
|
14
|
+
async function main() {
|
|
15
|
+
const stdin = await readStdin();
|
|
16
|
+
if (!prompt && !stdin) {
|
|
17
|
+
console.error("Usage: ask-antigravity-run <prompt>");
|
|
18
|
+
console.error(" echo 'diff' | ask-antigravity-run 'Review this diff'");
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
const fullPrompt = [prompt, stdin].filter(Boolean).join("\n\n");
|
|
22
|
+
try {
|
|
23
|
+
const result = await executeAntigravityCLI({ prompt: fullPrompt });
|
|
24
|
+
console.log(result.response);
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
console.error("ask-antigravity-run failed:", error);
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
main();
|
|
32
|
+
//# sourceMappingURL=antigravity-run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"antigravity-run.js","sourceRoot":"","sources":["../src/antigravity-run.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE9B,KAAK,UAAU,SAAS;IACtB,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACnC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;AACjD,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;IAEhC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACrD,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;QAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-run.d.ts","sourceRoot":"","sources":["../src/codex-run.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { executeCodexCLI } from "@ask-llm/codex-mcp/executor";
|
|
3
|
+
const args = process.argv.slice(2);
|
|
4
|
+
const prompt = args.join(" ");
|
|
5
|
+
async function readStdin() {
|
|
6
|
+
if (process.stdin.isTTY)
|
|
7
|
+
return "";
|
|
8
|
+
const chunks = [];
|
|
9
|
+
for await (const chunk of process.stdin) {
|
|
10
|
+
chunks.push(chunk);
|
|
11
|
+
}
|
|
12
|
+
return Buffer.concat(chunks).toString().trim();
|
|
13
|
+
}
|
|
14
|
+
async function main() {
|
|
15
|
+
const stdin = await readStdin();
|
|
16
|
+
if (!prompt && !stdin) {
|
|
17
|
+
console.error("Usage: ask-codex-run <prompt>");
|
|
18
|
+
console.error(" echo 'diff' | ask-codex-run 'Review this diff'");
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
const fullPrompt = [prompt, stdin].filter(Boolean).join("\n\n");
|
|
22
|
+
try {
|
|
23
|
+
const result = await executeCodexCLI({ prompt: fullPrompt });
|
|
24
|
+
console.log(result.response);
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
console.error("ask-codex-run failed:", error);
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
main();
|
|
32
|
+
//# sourceMappingURL=codex-run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-run.js","sourceRoot":"","sources":["../src/codex-run.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE9B,KAAK,UAAU,SAAS;IACtB,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACnC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;AACjD,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;IAEhC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC/C,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7E;AAED,eAAO,MAAM,SAAS,EAAE,gBAAgB,EAqCvC,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export const providers = [
|
|
2
|
+
{
|
|
3
|
+
name: "gemini",
|
|
4
|
+
command: "gemini",
|
|
5
|
+
async execute(prompt) {
|
|
6
|
+
const { executeGeminiCLI } = await import("@ask-llm/gemini-mcp/executor");
|
|
7
|
+
const result = await executeGeminiCLI({ prompt });
|
|
8
|
+
return result.response;
|
|
9
|
+
},
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
name: "codex",
|
|
13
|
+
command: "codex",
|
|
14
|
+
async execute(prompt) {
|
|
15
|
+
const { executeCodexCLI } = await import("@ask-llm/codex-mcp/executor");
|
|
16
|
+
const result = await executeCodexCLI({ prompt });
|
|
17
|
+
return result.response;
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
name: "ollama",
|
|
22
|
+
command: "ollama",
|
|
23
|
+
async execute(prompt) {
|
|
24
|
+
const { executeOllamaCLI } = await import("@ask-llm/ollama-mcp/executor");
|
|
25
|
+
const result = await executeOllamaCLI({ prompt });
|
|
26
|
+
return result.response;
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: "antigravity",
|
|
31
|
+
command: "agy",
|
|
32
|
+
async execute(prompt) {
|
|
33
|
+
const { executeAntigravityCLI } = await import("@ask-llm/antigravity-mcp/executor");
|
|
34
|
+
const result = await executeAntigravityCLI({ prompt });
|
|
35
|
+
return result.response;
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
];
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,SAAS,GAAuB;IAC3C;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,QAAQ;QACjB,KAAK,CAAC,OAAO,CAAC,MAAc;YAC1B,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC;YAC1E,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YAClD,OAAO,MAAM,CAAC,QAAQ,CAAC;QACzB,CAAC;KACF;IACD;QACE,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,OAAO;QAChB,KAAK,CAAC,OAAO,CAAC,MAAc;YAC1B,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;YACxE,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YACjD,OAAO,MAAM,CAAC,QAAQ,CAAC;QACzB,CAAC;KACF;IACD;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,QAAQ;QACjB,KAAK,CAAC,OAAO,CAAC,MAAc;YAC1B,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC;YAC1E,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YAClD,OAAO,MAAM,CAAC,QAAQ,CAAC;QACzB,CAAC;KACF;IACD;QACE,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,KAAK;QACd,KAAK,CAAC,OAAO,CAAC,MAAc;YAC1B,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,mCAAmC,CAAC,CAAC;YACpF,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YACvD,OAAO,MAAM,CAAC,QAAQ,CAAC;QACzB,CAAC;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ollama-run.d.ts","sourceRoot":"","sources":["../src/ollama-run.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { executeOllamaCLI } from "@ask-llm/ollama-mcp/executor";
|
|
3
|
+
const args = process.argv.slice(2);
|
|
4
|
+
const prompt = args.join(" ");
|
|
5
|
+
async function readStdin() {
|
|
6
|
+
if (process.stdin.isTTY)
|
|
7
|
+
return "";
|
|
8
|
+
const chunks = [];
|
|
9
|
+
for await (const chunk of process.stdin) {
|
|
10
|
+
chunks.push(chunk);
|
|
11
|
+
}
|
|
12
|
+
return Buffer.concat(chunks).toString().trim();
|
|
13
|
+
}
|
|
14
|
+
async function main() {
|
|
15
|
+
const stdin = await readStdin();
|
|
16
|
+
if (!prompt && !stdin) {
|
|
17
|
+
console.error("Usage: ask-ollama-run <prompt>");
|
|
18
|
+
console.error(" echo 'diff' | ask-ollama-run 'Review this diff'");
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
const fullPrompt = [prompt, stdin].filter(Boolean).join("\n\n");
|
|
22
|
+
try {
|
|
23
|
+
const result = await executeOllamaCLI({ prompt: fullPrompt });
|
|
24
|
+
console.log(result.response);
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
console.error("ask-ollama-run failed:", error);
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
main();
|
|
32
|
+
//# sourceMappingURL=ollama-run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ollama-run.js","sourceRoot":"","sources":["../src/ollama-run.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE9B,KAAK,UAAU,SAAS;IACtB,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACnC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;AACjD,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;IAEhC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAChD,OAAO,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;QACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
|
package/dist/run.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":""}
|
package/dist/run.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { executeGeminiCLI } from "@ask-llm/gemini-mcp/executor";
|
|
3
|
+
const args = process.argv.slice(2);
|
|
4
|
+
const prompt = args.join(" ");
|
|
5
|
+
async function readStdin() {
|
|
6
|
+
if (process.stdin.isTTY)
|
|
7
|
+
return "";
|
|
8
|
+
const chunks = [];
|
|
9
|
+
for await (const chunk of process.stdin) {
|
|
10
|
+
chunks.push(chunk);
|
|
11
|
+
}
|
|
12
|
+
return Buffer.concat(chunks).toString().trim();
|
|
13
|
+
}
|
|
14
|
+
async function main() {
|
|
15
|
+
const stdin = await readStdin();
|
|
16
|
+
if (!prompt && !stdin) {
|
|
17
|
+
console.error("Usage: ask-gemini-run <prompt>");
|
|
18
|
+
console.error(" echo 'diff' | ask-gemini-run 'Review this diff'");
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
const fullPrompt = [prompt, stdin].filter(Boolean).join("\n\n");
|
|
22
|
+
try {
|
|
23
|
+
const result = await executeGeminiCLI({ prompt: fullPrompt });
|
|
24
|
+
console.log(result.response);
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
console.error("ask-gemini-run failed:", error);
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
main();
|
|
32
|
+
//# sourceMappingURL=run.js.map
|
package/dist/run.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE9B,KAAK,UAAU,SAAS;IACtB,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACnC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;AACjD,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;IAEhC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAChD,OAAO,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;QACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
|
package/hooks/hooks.json
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"hooks": {
|
|
3
|
+
"Stop": [
|
|
4
|
+
{
|
|
5
|
+
"hooks": [
|
|
6
|
+
{
|
|
7
|
+
"type": "command",
|
|
8
|
+
"command": "node ${CLAUDE_PLUGIN_ROOT}/scripts/codex-pair-stop-gate.mjs"
|
|
9
|
+
}
|
|
10
|
+
]
|
|
11
|
+
}
|
|
12
|
+
],
|
|
13
|
+
"PostToolUse": [
|
|
14
|
+
{
|
|
15
|
+
"matcher": "Edit|Write|MultiEdit",
|
|
16
|
+
"hooks": [
|
|
17
|
+
{
|
|
18
|
+
"type": "command",
|
|
19
|
+
"command": "node ${CLAUDE_PLUGIN_ROOT}/scripts/codex-pair-watch.mjs"
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
"SessionStart": [
|
|
25
|
+
{
|
|
26
|
+
"hooks": [
|
|
27
|
+
{
|
|
28
|
+
"type": "command",
|
|
29
|
+
"command": "node ${CLAUDE_PLUGIN_ROOT}/scripts/codex-pair-session.mjs"
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"SessionEnd": [
|
|
35
|
+
{
|
|
36
|
+
"hooks": [
|
|
37
|
+
{
|
|
38
|
+
"type": "command",
|
|
39
|
+
"command": "node ${CLAUDE_PLUGIN_ROOT}/scripts/codex-pair-session.mjs"
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
}
|
|
43
|
+
],
|
|
44
|
+
"UserPromptSubmit": [
|
|
45
|
+
{
|
|
46
|
+
"hooks": [
|
|
47
|
+
{
|
|
48
|
+
"type": "command",
|
|
49
|
+
"command": "node ${CLAUDE_PLUGIN_ROOT}/scripts/codex-pair-prompt-drain.mjs"
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ask-llm/plugin",
|
|
3
|
+
"version": "0.13.0",
|
|
4
|
+
"description": "Ask LLM review, comparison, brainstorming, image, verification, and pairing workflows for Claude Code and Pi",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"ask-antigravity-run": "dist/antigravity-run.js",
|
|
9
|
+
"ask-codex-run": "dist/codex-run.js",
|
|
10
|
+
"ask-gemini-run": "dist/run.js",
|
|
11
|
+
"ask-ollama-run": "dist/ollama-run.js"
|
|
12
|
+
},
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "tsc",
|
|
15
|
+
"test": "vitest run",
|
|
16
|
+
"lint": "biome check src/ pi/ && biome lint scripts/ && tsc --noEmit && tsc --noEmit -p pi/tsconfig.json"
|
|
17
|
+
},
|
|
18
|
+
"keywords": [
|
|
19
|
+
"pi-package",
|
|
20
|
+
"pi-coding-agent",
|
|
21
|
+
"claude-code-plugin",
|
|
22
|
+
"codex",
|
|
23
|
+
"gemini",
|
|
24
|
+
"ollama",
|
|
25
|
+
"antigravity",
|
|
26
|
+
"code-review",
|
|
27
|
+
"second-opinion",
|
|
28
|
+
"llm"
|
|
29
|
+
],
|
|
30
|
+
"author": "Lykhoyda",
|
|
31
|
+
"license": "MIT",
|
|
32
|
+
"repository": {
|
|
33
|
+
"type": "git",
|
|
34
|
+
"url": "git+https://github.com/Lykhoyda/ask-llm.git",
|
|
35
|
+
"directory": "packages/claude-plugin"
|
|
36
|
+
},
|
|
37
|
+
"bugs": {
|
|
38
|
+
"url": "https://github.com/Lykhoyda/ask-llm/issues"
|
|
39
|
+
},
|
|
40
|
+
"homepage": "https://github.com/Lykhoyda/ask-llm#readme",
|
|
41
|
+
"files": [
|
|
42
|
+
".claude-plugin/",
|
|
43
|
+
".mcp.json",
|
|
44
|
+
"agents/",
|
|
45
|
+
"codex-pair-defaults.json",
|
|
46
|
+
"dist/",
|
|
47
|
+
"hooks/",
|
|
48
|
+
"LICENSE",
|
|
49
|
+
"pi/",
|
|
50
|
+
"prompts/",
|
|
51
|
+
"README.md",
|
|
52
|
+
"scripts/*.mjs",
|
|
53
|
+
"scripts/lib/",
|
|
54
|
+
"skills/"
|
|
55
|
+
],
|
|
56
|
+
"pi": {
|
|
57
|
+
"extensions": [
|
|
58
|
+
"./pi/extensions/index.ts"
|
|
59
|
+
],
|
|
60
|
+
"skills": [
|
|
61
|
+
"./skills/antigravity-review/SKILL.md",
|
|
62
|
+
"./skills/brainstorm/SKILL.md",
|
|
63
|
+
"./skills/brainstorm-all/SKILL.md",
|
|
64
|
+
"./skills/codex-image/SKILL.md",
|
|
65
|
+
"./skills/codex-pair/SKILL.md",
|
|
66
|
+
"./skills/codex-pair-ack/SKILL.md",
|
|
67
|
+
"./skills/codex-pair-pause/SKILL.md",
|
|
68
|
+
"./skills/codex-pair-resume/SKILL.md",
|
|
69
|
+
"./skills/codex-review/SKILL.md",
|
|
70
|
+
"./skills/codex-verify/SKILL.md",
|
|
71
|
+
"./skills/compare/SKILL.md",
|
|
72
|
+
"./skills/gemini-review/SKILL.md",
|
|
73
|
+
"./skills/multi-review/SKILL.md",
|
|
74
|
+
"./skills/ollama-review/SKILL.md",
|
|
75
|
+
"./skills/sol-review/SKILL.md"
|
|
76
|
+
]
|
|
77
|
+
},
|
|
78
|
+
"dependencies": {
|
|
79
|
+
"@ask-llm/antigravity-mcp": "^0.7.1",
|
|
80
|
+
"@ask-llm/codex-mcp": "^0.7.4",
|
|
81
|
+
"@ask-llm/gemini-mcp": "^1.7.1",
|
|
82
|
+
"@ask-llm/ollama-mcp": "^0.5.6"
|
|
83
|
+
},
|
|
84
|
+
"peerDependencies": {
|
|
85
|
+
"@earendil-works/pi-ai": "*",
|
|
86
|
+
"@earendil-works/pi-coding-agent": "*",
|
|
87
|
+
"typebox": "*"
|
|
88
|
+
},
|
|
89
|
+
"engines": {
|
|
90
|
+
"node": ">=20.0.0"
|
|
91
|
+
},
|
|
92
|
+
"devDependencies": {
|
|
93
|
+
"@biomejs/biome": "^2.4.4",
|
|
94
|
+
"@earendil-works/pi-ai": "^0.83.0",
|
|
95
|
+
"@earendil-works/pi-coding-agent": "^0.83.0",
|
|
96
|
+
"@types/node": "^22.19.13",
|
|
97
|
+
"typebox": "^1.3.7",
|
|
98
|
+
"typescript": "^7.0.2",
|
|
99
|
+
"vitest": "^4.1.10"
|
|
100
|
+
},
|
|
101
|
+
"publishConfig": {
|
|
102
|
+
"access": "public"
|
|
103
|
+
}
|
|
104
|
+
}
|