promptscout 1.1.0 → 1.3.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/README.md +60 -2
- package/dist/commands/history.js +30 -12
- package/dist/commands/history.js.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.js +2 -2
- package/dist/constants.js.map +1 -1
- package/dist/core/history-service.d.ts +1 -1
- package/dist/core/history-service.js +2 -2
- package/dist/core/history-service.js.map +1 -1
- package/dist/core/rewriter.js +6 -7
- package/dist/core/rewriter.js.map +1 -1
- package/dist/llm/inference.js +6 -1
- package/dist/llm/inference.js.map +1 -1
- package/dist/llm/prompts/tool-calling.js +6 -5
- package/dist/llm/prompts/tool-calling.js.map +1 -1
- package/dist/storage/history-repo.d.ts +1 -1
- package/dist/storage/history-repo.js +3 -2
- package/dist/storage/history-repo.js.map +1 -1
- package/dist/tools/search-utils.js +1 -0
- package/dist/tools/search-utils.js.map +1 -1
- package/package.json +2 -2
- package/claude-plugin/.claude-plugin/plugin.json +0 -5
- package/claude-plugin/hooks/hooks.json +0 -16
- package/claude-plugin/hooks/scripts/user-prompt-submit.sh +0 -47
package/README.md
CHANGED
|
@@ -38,6 +38,12 @@ flowchart LR
|
|
|
38
38
|
|
|
39
39
|
### Install
|
|
40
40
|
|
|
41
|
+
```bash
|
|
42
|
+
npm install -g promptscout
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Or from source:
|
|
46
|
+
|
|
41
47
|
```bash
|
|
42
48
|
git clone https://github.com/obsfx/promptscout.git
|
|
43
49
|
cd promptscout
|
|
@@ -75,15 +81,21 @@ Or in Claude Code interactive mode:
|
|
|
75
81
|
|
|
76
82
|
Once installed, every prompt you submit in Claude Code gets enriched with codebase context via the `UserPromptSubmit` hook. The plugin passes your prompt through `promptscout` with `--json-output --no-clipboard` and injects the result as additional context.
|
|
77
83
|
|
|
84
|
+
When context is found, the plugin shows a summary notification:
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
promptscout: enriched context (+5 files) (+3 sections) (+1 definitions)
|
|
88
|
+
```
|
|
89
|
+
|
|
78
90
|
If `promptscout` is not installed or fails for any reason, the plugin falls back silently and your original prompt goes through unchanged.
|
|
79
91
|
|
|
80
92
|
## Model
|
|
81
93
|
|
|
82
|
-
promptscout uses `Qwen 3 4B` (`Q4_K_M` quantization) running locally via [node-llama-cpp](https://github.com/withcatai/node-llama-cpp). The model
|
|
94
|
+
promptscout uses `Qwen 3 4B` (`Q4_K_M` quantization) running locally via [node-llama-cpp](https://github.com/withcatai/node-llama-cpp). The model uses GPU acceleration automatically when available (Metal on macOS, CUDA on Linux).
|
|
83
95
|
|
|
84
96
|
- Size: ~2.5GB (`GGUF Q4_K_M`)
|
|
85
97
|
- Context: 4096 tokens
|
|
86
|
-
- Latency:
|
|
98
|
+
- Latency: ~2s per prompt (Metal, Apple Silicon)
|
|
87
99
|
- Purpose: Decides which search tools to call based on your prompt. Does not rewrite your text.
|
|
88
100
|
|
|
89
101
|
## Tools
|
|
@@ -127,6 +139,52 @@ promptscout --json-output "fix the pagination bug"
|
|
|
127
139
|
--project-dir <dir> Project root directory
|
|
128
140
|
```
|
|
129
141
|
|
|
142
|
+
## Commands
|
|
143
|
+
|
|
144
|
+
### `promptscout setup`
|
|
145
|
+
|
|
146
|
+
Initialize promptscout and download the default model. Creates the data directory at `~/.promptscout/` and downloads `Qwen 3 4B` (~2.5GB).
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
promptscout setup
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### `promptscout history`
|
|
153
|
+
|
|
154
|
+
View prompt history with paginated table output.
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
# Show history for current directory (default: 10 per page)
|
|
158
|
+
promptscout history
|
|
159
|
+
|
|
160
|
+
# Show all history across directories
|
|
161
|
+
promptscout history -a
|
|
162
|
+
|
|
163
|
+
# Paginate results
|
|
164
|
+
promptscout history -p 2 -n 5
|
|
165
|
+
|
|
166
|
+
# Show full detail of a specific entry
|
|
167
|
+
promptscout history show 42
|
|
168
|
+
|
|
169
|
+
# Clear all history
|
|
170
|
+
promptscout history clear
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### `promptscout system-prompt`
|
|
174
|
+
|
|
175
|
+
View and manage the LLM system prompt that controls how prompts are classified and tools are selected.
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
# View current system prompt and token count
|
|
179
|
+
promptscout system-prompt
|
|
180
|
+
|
|
181
|
+
# Edit in $EDITOR
|
|
182
|
+
promptscout system-prompt edit
|
|
183
|
+
|
|
184
|
+
# Reset to default
|
|
185
|
+
promptscout system-prompt reset
|
|
186
|
+
```
|
|
187
|
+
|
|
130
188
|
## Examples
|
|
131
189
|
|
|
132
190
|
### Swift project (macOS audio capture tool)
|
package/dist/commands/history.js
CHANGED
|
@@ -1,23 +1,38 @@
|
|
|
1
1
|
import { confirm } from "@inquirer/prompts";
|
|
2
|
+
import Table from "cli-table3";
|
|
2
3
|
export function registerHistoryCommand(program, service) {
|
|
3
4
|
const hist = program.command("history").description("View prompt history");
|
|
4
5
|
hist
|
|
5
6
|
.option("-a, --all", "Show history across all directories")
|
|
6
|
-
.option("-n, --limit <number>", "Number of entries
|
|
7
|
+
.option("-n, --limit <number>", "Number of entries per page", "10")
|
|
8
|
+
.option("-p, --page <number>", "Page number", "1")
|
|
7
9
|
.action((opts) => {
|
|
8
10
|
const limit = parseInt(opts.limit, 10);
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
+
const page = parseInt(opts.page, 10);
|
|
12
|
+
const offset = (page - 1) * limit;
|
|
13
|
+
const entries = service.list(!!opts.all, limit, offset);
|
|
14
|
+
if (entries.length === 0 && page === 1) {
|
|
11
15
|
console.log("No history entries found.");
|
|
12
16
|
if (!opts.all) {
|
|
13
17
|
console.log("Tip: Use -a to show history from all directories.");
|
|
14
18
|
}
|
|
15
19
|
return;
|
|
16
20
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
21
|
+
if (entries.length === 0) {
|
|
22
|
+
console.log(`No entries on page ${page}.`);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const table = new Table({
|
|
26
|
+
head: ["#", "Model", "Prompt"],
|
|
27
|
+
colWidths: [6, 22, 60],
|
|
28
|
+
wordWrap: true,
|
|
29
|
+
style: { head: [], border: [] },
|
|
30
|
+
});
|
|
31
|
+
for (const e of entries) {
|
|
32
|
+
table.push([String(e.id), e.model_name, e.preview]);
|
|
20
33
|
}
|
|
34
|
+
console.log(table.toString());
|
|
35
|
+
console.log(` Page ${page} | ${entries.length} entries | promptscout history -p ${page + 1}`);
|
|
21
36
|
});
|
|
22
37
|
hist
|
|
23
38
|
.command("show <id>")
|
|
@@ -28,13 +43,16 @@ export function registerHistoryCommand(program, service) {
|
|
|
28
43
|
console.error(`Error: History entry #${id} not found.`);
|
|
29
44
|
process.exit(1);
|
|
30
45
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
46
|
+
const table = new Table({
|
|
47
|
+
style: { head: [], border: [] },
|
|
48
|
+
wordWrap: true,
|
|
49
|
+
colWidths: [14, 74],
|
|
50
|
+
});
|
|
51
|
+
table.push(["ID", String(entry.id)], ["Date", entry.created_at], ["Directory", entry.directory], ["Model", entry.model_name || "N/A"]);
|
|
52
|
+
console.log(table.toString());
|
|
53
|
+
console.log("\nRaw Input:");
|
|
36
54
|
console.log(entry.raw_input);
|
|
37
|
-
console.log(
|
|
55
|
+
console.log("\nImproved Output:");
|
|
38
56
|
console.log(entry.improved_output);
|
|
39
57
|
});
|
|
40
58
|
hist
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export declare const MODEL_DOWNLOAD_URI = "hf:Qwen/Qwen3-4B-GGUF:Q4_K_M";
|
|
|
7
7
|
export declare const LLM_CONTEXT_SIZE = 4096;
|
|
8
8
|
export declare const MODEL_HF_URI_KEY = "model_hf_uri";
|
|
9
9
|
export declare const MODEL_CONTEXT_SIZE_KEY = "model_context_size";
|
|
10
|
-
export declare const GPU_LAYERS
|
|
10
|
+
export declare const GPU_LAYERS: "auto";
|
|
11
11
|
export declare const RESPONSE_TOKEN_RESERVE = 1024;
|
|
12
12
|
export declare const HISTORY_PREVIEW_LENGTH = 60;
|
|
13
13
|
export declare const DEFAULT_HISTORY_LIMIT = 20;
|
package/dist/constants.js
CHANGED
|
@@ -11,8 +11,8 @@ export const MODEL_DOWNLOAD_URI = "hf:Qwen/Qwen3-4B-GGUF:Q4_K_M";
|
|
|
11
11
|
export const LLM_CONTEXT_SIZE = 4096;
|
|
12
12
|
export const MODEL_HF_URI_KEY = "model_hf_uri";
|
|
13
13
|
export const MODEL_CONTEXT_SIZE_KEY = "model_context_size";
|
|
14
|
-
//
|
|
15
|
-
export const GPU_LAYERS =
|
|
14
|
+
// "auto" lets node-llama-cpp offload as many layers as fit in GPU/Metal memory
|
|
15
|
+
export const GPU_LAYERS = "auto";
|
|
16
16
|
// Tokens reserved for the model's response
|
|
17
17
|
export const RESPONSE_TOKEN_RESERVE = 1024;
|
|
18
18
|
export const HISTORY_PREVIEW_LENGTH = 60;
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;AAEvB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AACnD,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AACxD,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAElD,MAAM,CAAC,MAAM,eAAe,GAAG,sBAAsB,CAAC;AACtD,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AAC7D,MAAM,CAAC,MAAM,kBAAkB,GAAG,8BAA8B,CAAC;AAEjE,OAAO;AACP,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAErC,MAAM,CAAC,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAC/C,MAAM,CAAC,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;AAC3D
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;AAEvB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AACnD,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AACxD,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAElD,MAAM,CAAC,MAAM,eAAe,GAAG,sBAAsB,CAAC;AACtD,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AAC7D,MAAM,CAAC,MAAM,kBAAkB,GAAG,8BAA8B,CAAC;AAEjE,OAAO;AACP,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAErC,MAAM,CAAC,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAC/C,MAAM,CAAC,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;AAC3D,+EAA+E;AAC/E,MAAM,CAAC,MAAM,UAAU,GAAG,MAAe,CAAC;AAE1C,2CAA2C;AAC3C,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAE3C,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AACzC,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACxC,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAEjD,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eA4FtB,CAAC"}
|
|
@@ -9,7 +9,7 @@ export interface HistoryListItem {
|
|
|
9
9
|
export declare class HistoryService {
|
|
10
10
|
private historyRepo;
|
|
11
11
|
constructor(historyRepo: HistoryRepo);
|
|
12
|
-
list(all: boolean, limit: number): HistoryListItem[];
|
|
12
|
+
list(all: boolean, limit: number, offset?: number): HistoryListItem[];
|
|
13
13
|
findById(id: number): HistoryEntry | undefined;
|
|
14
14
|
clear(): void;
|
|
15
15
|
}
|
|
@@ -5,9 +5,9 @@ export class HistoryService {
|
|
|
5
5
|
constructor(historyRepo) {
|
|
6
6
|
this.historyRepo = historyRepo;
|
|
7
7
|
}
|
|
8
|
-
list(all, limit) {
|
|
8
|
+
list(all, limit, offset = 0) {
|
|
9
9
|
const directory = all ? undefined : process.cwd();
|
|
10
|
-
const entries = this.historyRepo.list(directory, limit);
|
|
10
|
+
const entries = this.historyRepo.list(directory, limit, offset);
|
|
11
11
|
return entries.map((e) => ({
|
|
12
12
|
id: e.id,
|
|
13
13
|
createdAt: e.created_at,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history-service.js","sourceRoot":"","sources":["../../src/core/history-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAS5C,MAAM,OAAO,cAAc;IACL;IAApB,YAAoB,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;IAAG,CAAC;IAEhD,IAAI,CAAC,GAAY,EAAE,KAAa;
|
|
1
|
+
{"version":3,"file":"history-service.js","sourceRoot":"","sources":["../../src/core/history-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAS5C,MAAM,OAAO,cAAc;IACL;IAApB,YAAoB,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;IAAG,CAAC;IAEhD,IAAI,CAAC,GAAY,EAAE,KAAa,EAAE,SAAiB,CAAC;QAClD,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAChE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACzB,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,SAAS,EAAE,CAAC,CAAC,UAAU;YACvB,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE,sBAAsB,CAAC;YACtD,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK;SACpD,CAAC,CAAC,CAAC;IACN,CAAC;IAED,QAAQ,CAAC,EAAU;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;CACF"}
|
package/dist/core/rewriter.js
CHANGED
|
@@ -41,15 +41,14 @@ export class Rewriter {
|
|
|
41
41
|
if (calls.length === 0)
|
|
42
42
|
return rawPrompt;
|
|
43
43
|
const ig = loadIgnoreFilter(searchDir);
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
const param = call.arguments.url ?? call.arguments.query;
|
|
47
|
-
onStatus?.(`Called ${call.name}(${param})`);
|
|
44
|
+
onStatus?.(`Running ${calls.length} tool calls`);
|
|
45
|
+
const settled = await Promise.all(calls.map(async (call) => {
|
|
48
46
|
const result = await executeToolCall(call, searchDir, ig);
|
|
49
47
|
if (!result || isEmptyResult(result))
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
48
|
+
return null;
|
|
49
|
+
return formatToolResult(call, result);
|
|
50
|
+
}));
|
|
51
|
+
const results = settled.filter((r) => r !== null);
|
|
53
52
|
if (results.length === 0)
|
|
54
53
|
return rawPrompt;
|
|
55
54
|
const outputs = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rewriter.js","sourceRoot":"","sources":["../../src/core/rewriter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EACL,sBAAsB,EACtB,cAAc,GACf,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAEL,gBAAgB,EAChB,eAAe,EACf,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,mBAAmB,GAAoB;IAC3C,WAAW,EAAE,GAAG;IAChB,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,GAAG;IACT,aAAa,EAAE;QACb,UAAU,EAAE,EAAE;QACd,OAAO,EAAE,GAAG;QACZ,gBAAgB,EAAE,GAAG;QACrB,eAAe,EAAE,GAAG;QACpB,eAAe,EAAE,KAAK;KACvB;CACF,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AAE7D,SAAS,aAAa,CAAC,MAAc;IACnC,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAc,EAAE,MAAc;IACtD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;IACzD,OAAO,IAAI,IAAI,CAAC,IAAI,WAAW,KAAK,OAAO,MAAM,OAAO,IAAI,CAAC,IAAI,GAAG,CAAC;AACvE,CAAC;AAED,MAAM,OAAO,QAAQ;IACC;IAApB,YAAoB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAI,CAAC;IAE/C,WAAW;QACT,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,OAAO,CACX,SAAiB,EACjB,UAAmB,EACnB,QAAoC;QAEpC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC;QAC1D,MAAM,SAAS,GAAG,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAE9C,QAAQ,EAAE,CAAC,YAAY,CAAC,CAAC;QAEzB,MAAM,YAAY,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;QAC9D,MAAM,GAAG,GAAG,MAAM,QAAQ,CACxB,YAAY,EACZ,SAAS,EACT,KAAK,EACL,WAAW,EACX,mBAAmB,CACpB,CAAC;QAEF,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAEzC,MAAM,EAAE,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"rewriter.js","sourceRoot":"","sources":["../../src/core/rewriter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EACL,sBAAsB,EACtB,cAAc,GACf,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAEL,gBAAgB,EAChB,eAAe,EACf,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,mBAAmB,GAAoB;IAC3C,WAAW,EAAE,GAAG;IAChB,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,GAAG;IACT,aAAa,EAAE;QACb,UAAU,EAAE,EAAE;QACd,OAAO,EAAE,GAAG;QACZ,gBAAgB,EAAE,GAAG;QACrB,eAAe,EAAE,GAAG;QACpB,eAAe,EAAE,KAAK;KACvB;CACF,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AAE7D,SAAS,aAAa,CAAC,MAAc;IACnC,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAc,EAAE,MAAc;IACtD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;IACzD,OAAO,IAAI,IAAI,CAAC,IAAI,WAAW,KAAK,OAAO,MAAM,OAAO,IAAI,CAAC,IAAI,GAAG,CAAC;AACvE,CAAC;AAED,MAAM,OAAO,QAAQ;IACC;IAApB,YAAoB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAI,CAAC;IAE/C,WAAW;QACT,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,OAAO,CACX,SAAiB,EACjB,UAAmB,EACnB,QAAoC;QAEpC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC;QAC1D,MAAM,SAAS,GAAG,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAE9C,QAAQ,EAAE,CAAC,YAAY,CAAC,CAAC;QAEzB,MAAM,YAAY,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;QAC9D,MAAM,GAAG,GAAG,MAAM,QAAQ,CACxB,YAAY,EACZ,SAAS,EACT,KAAK,EACL,WAAW,EACX,mBAAmB,CACpB,CAAC;QAEF,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAEzC,MAAM,EAAE,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAEvC,QAAQ,EAAE,CAAC,WAAW,KAAK,CAAC,MAAM,aAAa,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACvB,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;YAC1D,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC;gBAAE,OAAO,IAAI,CAAC;YAClD,OAAO,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC,CAAC,CACH,CAAC;QACF,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAE/D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAE3C,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAEnC,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;CACF"}
|
package/dist/llm/inference.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { existsSync } from "node:fs";
|
|
2
|
-
import { getLlama, resolveModelFile, LlamaChatSession, LlamaLogLevel, } from "node-llama-cpp";
|
|
2
|
+
import { getLlama, resolveModelFile, LlamaChatSession, LlamaLogLevel, QwenChatWrapper, resolveChatWrapper, } from "node-llama-cpp";
|
|
3
3
|
import { GPU_LAYERS } from "../constants.js";
|
|
4
4
|
import { getModelDir } from "./model-manager.js";
|
|
5
5
|
export async function generate(systemPrompt, userPrompt, hfUri, contextSize, inferenceParams, onToken) {
|
|
@@ -17,9 +17,14 @@ export async function generate(systemPrompt, userPrompt, hfUri, contextSize, inf
|
|
|
17
17
|
const context = await model.createContext({
|
|
18
18
|
contextSize,
|
|
19
19
|
});
|
|
20
|
+
const resolved = resolveChatWrapper(model);
|
|
21
|
+
const chatWrapper = resolved instanceof QwenChatWrapper
|
|
22
|
+
? new QwenChatWrapper({ thoughts: "discourage" })
|
|
23
|
+
: undefined;
|
|
20
24
|
const session = new LlamaChatSession({
|
|
21
25
|
contextSequence: context.getSequence(),
|
|
22
26
|
systemPrompt,
|
|
27
|
+
chatWrapper,
|
|
23
28
|
});
|
|
24
29
|
const abort = new AbortController();
|
|
25
30
|
const timer = setTimeout(() => abort.abort(), 100_000);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inference.js","sourceRoot":"","sources":["../../src/llm/inference.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,
|
|
1
|
+
{"version":3,"file":"inference.js","sourceRoot":"","sources":["../../src/llm/inference.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,YAAoB,EACpB,UAAkB,EAClB,KAAa,EACb,WAAmB,EACnB,eAAgC,EAChC,OAAgC;IAEhC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;QACvC,CAAC,CAAC,MAAM,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC;QAC9C,CAAC,CAAC,KAAK,CAAC;IAEV,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,sBAAsB,SAAS,2CAA2C,CAC3E,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC;QAClC,SAAS;QACT,SAAS,EAAE,UAAU;KACtB,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC;QACxC,WAAW;KACZ,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,QAAQ,YAAY,eAAe;QACrD,CAAC,CAAC,IAAI,eAAe,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;QACjD,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC;QACnC,eAAe,EAAE,OAAO,CAAC,WAAW,EAAE;QACtC,YAAY;QACZ,WAAW;KACZ,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;IACpC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;IAEvD,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE;YAC1C,WAAW,EAAE,eAAe,CAAC,WAAW;YACxC,IAAI,EAAE,eAAe,CAAC,IAAI;YAC1B,IAAI,EAAE,eAAe,CAAC,IAAI;YAC1B,IAAI,EAAE,eAAe,CAAC,IAAI;YAC1B,aAAa,EAAE,eAAe,CAAC,aAAa;YAC5C,oBAAoB,EAAE,IAAI;YAC1B,WAAW,EAAE,OAAO;YACpB,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC"}
|
|
@@ -8,12 +8,13 @@ When a user mentions code, files, or technical topics, call the relevant tools.
|
|
|
8
8
|
Rules:
|
|
9
9
|
- Output ONLY a JSON array: [{"name": "tool_name", "arguments": {"param": "value"}}]
|
|
10
10
|
- Use single keywords for search, not multi-word phrases.
|
|
11
|
-
-
|
|
12
|
-
-
|
|
11
|
+
- Call 3-5 tools per request. More context is better. Use different keywords across tools.
|
|
12
|
+
- ALWAYS call file_finder AND at least two of: section_finder, definition_finder, import_tracer, git_history.
|
|
13
|
+
- Use each tool with a DIFFERENT keyword to maximize coverage:
|
|
13
14
|
- file_finder: discover which files relate to a topic
|
|
14
|
-
- section_finder: find specific code lines
|
|
15
|
-
- definition_finder: find
|
|
16
|
-
- import_tracer: find
|
|
15
|
+
- section_finder: find specific code lines matching a different keyword
|
|
16
|
+
- definition_finder: find where functions, classes, types are declared
|
|
17
|
+
- import_tracer: find dependency relationships between modules
|
|
17
18
|
- git_history: find recent commits that changed related code
|
|
18
19
|
- If the prompt is feedback, observation, or status update (not asking to change code), output exactly: []
|
|
19
20
|
- Do NOT output anything except the JSON array.`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-calling.js","sourceRoot":"","sources":["../../../src/llm/prompts/tool-calling.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,sBAAsB,CAAC,QAAmB;IACxD,OAAO;;EAEP,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC
|
|
1
|
+
{"version":3,"file":"tool-calling.js","sourceRoot":"","sources":["../../../src/llm/prompts/tool-calling.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,sBAAsB,CAAC,QAAmB;IACxD,OAAO;;EAEP,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;;;;;;;;;;;;;;;;gDAgBa,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,MAAM,OAAO,GAAG,MAAM;SACnB,IAAI,EAAE;SACN,OAAO,CAAC,2BAA2B,EAAE,EAAE,CAAC;SACxC,IAAI,EAAE,CAAC;IAEV,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QACzC,OAAO,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,iDAAiD;QACjD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC3C,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9B,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -4,7 +4,7 @@ export declare class HistoryRepo {
|
|
|
4
4
|
private db;
|
|
5
5
|
constructor(db: BetterSQLite3Database);
|
|
6
6
|
create(entry: Omit<HistoryEntry, "id" | "created_at">): HistoryEntry;
|
|
7
|
-
list(directory?: string, limit?: number): HistoryEntry[];
|
|
7
|
+
list(directory?: string, limit?: number, offset?: number): HistoryEntry[];
|
|
8
8
|
findById(id: number): HistoryEntry | undefined;
|
|
9
9
|
clear(): void;
|
|
10
10
|
}
|
|
@@ -23,12 +23,13 @@ export class HistoryRepo {
|
|
|
23
23
|
.where(eq(history.id, Number(result.lastInsertRowid)))
|
|
24
24
|
.get();
|
|
25
25
|
}
|
|
26
|
-
list(directory, limit = DEFAULT_HISTORY_LIMIT) {
|
|
26
|
+
list(directory, limit = DEFAULT_HISTORY_LIMIT, offset = 0) {
|
|
27
27
|
const query = this.db
|
|
28
28
|
.select()
|
|
29
29
|
.from(history)
|
|
30
30
|
.orderBy(desc(history.created_at))
|
|
31
|
-
.limit(limit)
|
|
31
|
+
.limit(limit)
|
|
32
|
+
.offset(offset);
|
|
32
33
|
if (directory) {
|
|
33
34
|
return query.where(eq(history.directory, directory)).all();
|
|
34
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history-repo.js","sourceRoot":"","sources":["../../src/storage/history-repo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,IAAI,EAAO,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,OAAO,WAAW;IACF;IAApB,YAAoB,EAAyB;QAAzB,OAAE,GAAF,EAAE,CAAuB;IAAG,CAAC;IAEjD,MAAM,CAAC,KAA8C;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;aACnB,MAAM,CAAC,OAAO,CAAC;aACf,MAAM,CAAC;YACN,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,UAAU,EAAE,KAAK,CAAC,UAAU;SAC7B,CAAC;aACD,GAAG,EAAE,CAAC;QAET,OAAO,IAAI,CAAC,EAAE;aACX,MAAM,EAAE;aACR,IAAI,CAAC,OAAO,CAAC;aACb,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;aACrD,GAAG,EAAkB,CAAC;IAC3B,CAAC;IAED,IAAI,CAAC,SAAkB,EAAE,QAAgB,qBAAqB;
|
|
1
|
+
{"version":3,"file":"history-repo.js","sourceRoot":"","sources":["../../src/storage/history-repo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,IAAI,EAAO,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,OAAO,WAAW;IACF;IAApB,YAAoB,EAAyB;QAAzB,OAAE,GAAF,EAAE,CAAuB;IAAG,CAAC;IAEjD,MAAM,CAAC,KAA8C;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;aACnB,MAAM,CAAC,OAAO,CAAC;aACf,MAAM,CAAC;YACN,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,UAAU,EAAE,KAAK,CAAC,UAAU;SAC7B,CAAC;aACD,GAAG,EAAE,CAAC;QAET,OAAO,IAAI,CAAC,EAAE;aACX,MAAM,EAAE;aACR,IAAI,CAAC,OAAO,CAAC;aACb,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;aACrD,GAAG,EAAkB,CAAC;IAC3B,CAAC;IAED,IAAI,CAAC,SAAkB,EAAE,QAAgB,qBAAqB,EAAE,SAAiB,CAAC;QAChF,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE;aAClB,MAAM,EAAE;aACR,IAAI,CAAC,OAAO,CAAC;aACb,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;aACjC,KAAK,CAAC,KAAK,CAAC;aACZ,MAAM,CAAC,MAAM,CAAC,CAAC;QAElB,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,EAAoB,CAAC;QAC/E,CAAC;QACD,OAAO,KAAK,CAAC,GAAG,EAAoB,CAAC;IACvC,CAAC;IAED,QAAQ,CAAC,EAAU;QACjB,OAAO,IAAI,CAAC,EAAE;aACX,MAAM,EAAE;aACR,IAAI,CAAC,OAAO,CAAC;aACb,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;aACzB,GAAG,EAA8B,CAAC;IACvC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;IAChC,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-utils.js","sourceRoot":"","sources":["../../src/tools/search-utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"search-utils.js","sourceRoot":"","sources":["../../src/tools/search-utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "promptscout",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Enrich coding agent prompts with codebase context using a local LLM",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
},
|
|
9
9
|
"files": [
|
|
10
10
|
"dist",
|
|
11
|
-
"claude-plugin",
|
|
12
11
|
"README.md",
|
|
13
12
|
"LICENSE"
|
|
14
13
|
],
|
|
@@ -47,6 +46,7 @@
|
|
|
47
46
|
"dependencies": {
|
|
48
47
|
"@inquirer/prompts": "^8.2.0",
|
|
49
48
|
"better-sqlite3": "^12.6.2",
|
|
49
|
+
"cli-table3": "^0.6.5",
|
|
50
50
|
"clipboardy": "^5.2.1",
|
|
51
51
|
"commander": "^14.0.3",
|
|
52
52
|
"drizzle-orm": "^0.45.1",
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
set -euo pipefail
|
|
3
|
-
|
|
4
|
-
# Read hook input from stdin
|
|
5
|
-
input=$(cat)
|
|
6
|
-
|
|
7
|
-
# Extract the user's prompt and project directory
|
|
8
|
-
prompt=$(echo "$input" | jq -r '.prompt // empty')
|
|
9
|
-
project_dir=$(echo "$input" | jq -r '.cwd // empty')
|
|
10
|
-
|
|
11
|
-
if [ -z "$prompt" ]; then
|
|
12
|
-
exit 0
|
|
13
|
-
fi
|
|
14
|
-
|
|
15
|
-
# Check if promptscout CLI is available
|
|
16
|
-
if ! command -v promptscout &>/dev/null; then
|
|
17
|
-
exit 0
|
|
18
|
-
fi
|
|
19
|
-
|
|
20
|
-
# Run promptscout with JSON output and no clipboard
|
|
21
|
-
# Build CLI arguments
|
|
22
|
-
cli_args=(--json-output --no-clipboard)
|
|
23
|
-
if [ -n "$project_dir" ]; then
|
|
24
|
-
cli_args+=(--project-dir "$project_dir")
|
|
25
|
-
fi
|
|
26
|
-
|
|
27
|
-
result=$(promptscout "$prompt" "${cli_args[@]}" 2>/dev/null) || {
|
|
28
|
-
# Graceful degradation: if CLI fails, let original prompt through
|
|
29
|
-
exit 0
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
# Extract the final improved prompt
|
|
33
|
-
improved=$(echo "$result" | jq -r '.final // empty')
|
|
34
|
-
|
|
35
|
-
if [ -z "$improved" ]; then
|
|
36
|
-
exit 0
|
|
37
|
-
fi
|
|
38
|
-
|
|
39
|
-
# Inject as additionalContext
|
|
40
|
-
cat <<EOF
|
|
41
|
-
{
|
|
42
|
-
"hookSpecificOutput": {
|
|
43
|
-
"hookEventName": "UserPromptSubmit",
|
|
44
|
-
"additionalContext": $(echo "$improved" | jq -Rs .)
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
EOF
|