pupt 1.2.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 +42 -489
- package/dist/annotations/annotation-analyzer.js +5 -5
- package/dist/annotations/annotation-analyzer.js.map +1 -1
- package/dist/cli.js +11 -50
- package/dist/cli.js.map +1 -1
- package/dist/commands/add.js +5 -5
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/annotate.d.ts.map +1 -1
- package/dist/commands/annotate.js +8 -132
- package/dist/commands/annotate.js.map +1 -1
- package/dist/commands/history.d.ts +1 -0
- package/dist/commands/history.d.ts.map +1 -1
- package/dist/commands/history.js +50 -0
- package/dist/commands/history.js.map +1 -1
- package/dist/commands/init-refactored.d.ts.map +1 -1
- package/dist/commands/init-refactored.js +2 -1
- package/dist/commands/init-refactored.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +44 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +124 -29
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/run.d.ts +2 -0
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +125 -46
- package/dist/commands/run.js.map +1 -1
- package/dist/config/config-manager.d.ts +2 -1
- package/dist/config/config-manager.d.ts.map +1 -1
- package/dist/config/config-manager.js +12 -1
- package/dist/config/config-manager.js.map +1 -1
- package/dist/config/migration.d.ts +2 -1
- package/dist/config/migration.d.ts.map +1 -1
- package/dist/config/migration.js +1 -18
- package/dist/config/migration.js.map +1 -1
- package/dist/history/enhanced-history-manager.d.ts +3 -1
- package/dist/history/enhanced-history-manager.d.ts.map +1 -1
- package/dist/history/enhanced-history-manager.js +29 -2
- package/dist/history/enhanced-history-manager.js.map +1 -1
- package/dist/history/history-manager.d.ts +3 -1
- package/dist/history/history-manager.d.ts.map +1 -1
- package/dist/history/history-manager.js +36 -13
- package/dist/history/history-manager.js.map +1 -1
- package/dist/prompts/input-types/file-prompt.d.ts +2 -2
- package/dist/prompts/input-types/file-prompt.d.ts.map +1 -1
- package/dist/prompts/input-types/file-prompt.js +0 -1
- package/dist/prompts/input-types/file-prompt.js.map +1 -1
- package/dist/prompts/input-types/file-search-prompt.d.ts +0 -1
- package/dist/prompts/input-types/file-search-prompt.d.ts.map +1 -1
- package/dist/prompts/input-types/file-search-prompt.js +0 -1
- package/dist/prompts/input-types/file-search-prompt.js.map +1 -1
- package/dist/prompts/input-types/review-file-prompt.d.ts +0 -1
- package/dist/prompts/input-types/review-file-prompt.d.ts.map +1 -1
- package/dist/prompts/input-types/review-file-prompt.js +1 -2
- package/dist/prompts/input-types/review-file-prompt.js.map +1 -1
- package/dist/prompts/prompt-manager.js +3 -3
- package/dist/prompts/prompt-manager.js.map +1 -1
- package/dist/pupt-1.3.0.tgz +0 -0
- package/dist/schemas/config-schema.d.ts +18 -578
- package/dist/schemas/config-schema.d.ts.map +1 -1
- package/dist/schemas/config-schema.js +6 -12
- package/dist/schemas/config-schema.js.map +1 -1
- package/dist/schemas/prompt-schema.d.ts +16 -23
- package/dist/schemas/prompt-schema.d.ts.map +1 -1
- package/dist/scripts/migrate-annotations.d.ts +11 -0
- package/dist/scripts/migrate-annotations.d.ts.map +1 -0
- package/dist/scripts/migrate-annotations.js +108 -0
- package/dist/scripts/migrate-annotations.js.map +1 -0
- package/dist/search/file-search-engine.d.ts +3 -2
- package/dist/search/file-search-engine.d.ts.map +1 -1
- package/dist/search/search-engine.js +7 -7
- package/dist/search/search-engine.js.map +1 -1
- package/dist/services/auto-annotation-service.d.ts +5 -4
- package/dist/services/auto-annotation-service.d.ts.map +1 -1
- package/dist/services/auto-annotation-service.js +332 -96
- package/dist/services/auto-annotation-service.js.map +1 -1
- package/dist/services/file-system-service.d.ts +5 -4
- package/dist/services/file-system-service.d.ts.map +1 -1
- package/dist/services/git-service.d.ts +3 -2
- package/dist/services/git-service.d.ts.map +1 -1
- package/dist/services/logging-service.d.ts +2 -3
- package/dist/services/logging-service.d.ts.map +1 -1
- package/dist/services/logging-service.js +2 -2
- package/dist/services/logging-service.js.map +1 -1
- package/dist/services/output-capture-service.d.ts +6 -3
- package/dist/services/output-capture-service.d.ts.map +1 -1
- package/dist/services/output-capture-service.js +133 -67
- package/dist/services/output-capture-service.js.map +1 -1
- package/dist/services/prompt-service.d.ts +4 -3
- package/dist/services/prompt-service.d.ts.map +1 -1
- package/dist/services/prompt-service.js +11 -11
- package/dist/services/prompt-service.js.map +1 -1
- package/dist/services/review-data-builder.d.ts.map +1 -1
- package/dist/services/review-data-builder.js +70 -12
- package/dist/services/review-data-builder.js.map +1 -1
- package/dist/services/ui-service.d.ts +3 -3
- package/dist/services/ui-service.d.ts.map +1 -1
- package/dist/services/ui-service.js +2 -2
- package/dist/services/ui-service.js.map +1 -1
- package/dist/template/helpers/index.d.ts.map +1 -1
- package/dist/template/helpers/index.js +26 -2
- package/dist/template/helpers/index.js.map +1 -1
- package/dist/template/template-context.d.ts +7 -1
- package/dist/template/template-context.d.ts.map +1 -1
- package/dist/template/template-context.js +17 -1
- package/dist/template/template-context.js.map +1 -1
- package/dist/template/template-engine.d.ts +2 -1
- package/dist/template/template-engine.d.ts.map +1 -1
- package/dist/template/template-engine.js +4 -2
- package/dist/template/template-engine.js.map +1 -1
- package/dist/types/annotations.d.ts +1 -0
- package/dist/types/annotations.d.ts.map +1 -1
- package/dist/types/config.d.ts +5 -10
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js.map +1 -1
- package/dist/types/history.d.ts +3 -0
- package/dist/types/history.d.ts.map +1 -1
- package/dist/types/patterns.d.ts +2 -1
- package/dist/types/patterns.d.ts.map +1 -1
- package/dist/types/prompt.d.ts +1 -1
- package/dist/types/prompt.d.ts.map +1 -1
- package/dist/types/review.d.ts +8 -3
- package/dist/types/review.d.ts.map +1 -1
- package/dist/ui/console-ui.d.ts +2 -2
- package/dist/ui/console-ui.d.ts.map +1 -1
- package/dist/ui/console-ui.js +0 -1
- package/dist/ui/console-ui.js.map +1 -1
- package/dist/ui/interactive-search.js +2 -2
- package/dist/ui/interactive-search.js.map +1 -1
- package/dist/utils/annotation-migration.d.ts +12 -0
- package/dist/utils/annotation-migration.d.ts.map +1 -0
- package/dist/utils/annotation-migration.js +103 -0
- package/dist/utils/annotation-migration.js.map +1 -0
- package/dist/utils/editor.d.ts +2 -1
- package/dist/utils/editor.d.ts.map +1 -1
- package/dist/utils/errors.d.ts +4 -2
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +12 -1
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/file-utils.d.ts +3 -4
- package/dist/utils/file-utils.d.ts.map +1 -1
- package/dist/utils/file-utils.js +2 -2
- package/dist/utils/file-utils.js.map +1 -1
- package/dist/utils/git-info.d.ts +2 -1
- package/dist/utils/git-info.d.ts.map +1 -1
- package/dist/utils/gitignore.js +5 -5
- package/dist/utils/gitignore.js.map +1 -1
- package/dist/utils/platform.js +3 -3
- package/dist/utils/platform.js.map +1 -1
- package/dist/utils/tool-detection.d.ts +2 -1
- package/dist/utils/tool-detection.d.ts.map +1 -1
- package/dist/utils/trie.d.ts +2 -1
- package/dist/utils/trie.d.ts.map +1 -1
- package/package.json +14 -9
- package/prompts/ad-hoc-long.md +52 -0
- package/prompts/ad-hoc.md +23 -0
- package/prompts/add-summary.md +42 -0
- package/prompts/analyze-execution.md +181 -0
- package/prompts/code-review.md +97 -0
- package/prompts/debugging-error-message.md +75 -0
- package/prompts/fix-github-actions.md +55 -0
- package/prompts/fix-test-errors.md +66 -0
- package/prompts/git-commit-comment.md +54 -0
- package/prompts/implementation-phase.md +46 -0
- package/prompts/implementation-plan.md +87 -0
- package/prompts/new-feature.md +80 -0
- package/prompts/new-project.md +11 -0
- package/prompts/one-shot-change.md +71 -0
- package/prompts/pupt-prompt-improvement.md +264 -0
- package/prompts/simple-test.md +11 -0
- package/prompts/update-design.md +68 -0
- package/prompts/update-documentation.md +8 -0
- package/dist/pupt-1.2.0.tgz +0 -0
package/README.md
CHANGED
|
@@ -1,516 +1,69 @@
|
|
|
1
|
-
|
|
1
|
+
[](https://github.com/apowers313/pupt/actions)
|
|
2
|
+
[](https://www.npmjs.com/package/pupt)
|
|
3
|
+
[](https://apowers313.github.io/pupt/)
|
|
4
|
+
[](https://coveralls.io/github/apowers313/pupt?branch=master)
|
|
2
5
|
|
|
3
|
-
|
|
6
|
+
# PUPT (Powerful Universal Prompt Tool)
|
|
7
|
+
|
|
8
|
+
<div align="center">
|
|
9
|
+
<img src="./assets/pupt.png" alt="PUPT Logo" width="200">
|
|
10
|
+
|
|
11
|
+
# PUPT
|
|
12
|
+
**Your Faithful Prompt Companion**
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
A powerful CLI tool for managing and using AI prompts with template support, designed to be your faithful prompt companion.
|
|
4
16
|
|
|
5
17
|
## Features
|
|
6
18
|
|
|
7
|
-
-
|
|
19
|
+
- ✏️ **Prompt Management** - Create, edit, and organize prompts easily
|
|
8
20
|
- 📝 **Template Support** - Use Handlebars templates with user input
|
|
9
|
-
-
|
|
21
|
+
- 🔍 **Interactive Search** - Quickly find prompts with fuzzy search
|
|
10
22
|
- 🔧 **Cross-platform** - Works on Windows, macOS, and Linux
|
|
23
|
+
- 🚀 **Tool Integration** - Run prompts with Claude Code, Amazon Q, or any command line tool
|
|
11
24
|
- 📊 **History Tracking** - Keep track of generated prompts and re-run them
|
|
12
|
-
-
|
|
13
|
-
- 🚀 **External Tool Integration** - Run prompts with any command-line tool
|
|
14
|
-
- ✏️ **Prompt Management** - Create, edit, and organize prompts easily
|
|
25
|
+
- 📊 **Output Capture** - Capture and save command outputs (configurable)
|
|
15
26
|
- 🏷️ **Annotations** - Add notes and tags to your prompt history
|
|
16
|
-
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
```bash
|
|
21
|
-
npm install -g cli-prompt-tool
|
|
22
|
-
```
|
|
27
|
+
- 🤖 **Auto-annotation** - Automatically analyze and annotate prompt executions
|
|
28
|
+
- 📋 **Review Command** - Analyze prompt usage patterns and generate improvement suggestions
|
|
29
|
+
- 📦 **Install Prompts** - Install and share prompts from git or npm
|
|
23
30
|
|
|
24
31
|
## Quick Start
|
|
25
32
|
|
|
26
|
-
1. Initialize your configuration:
|
|
27
|
-
|
|
28
33
|
```bash
|
|
29
|
-
|
|
30
|
-
|
|
34
|
+
# Install globally
|
|
35
|
+
npm install -g pupt
|
|
31
36
|
|
|
32
|
-
|
|
37
|
+
# Initialize configuration
|
|
38
|
+
pt init
|
|
33
39
|
|
|
34
|
-
|
|
40
|
+
# Create your first prompt
|
|
35
41
|
pt add
|
|
36
|
-
```
|
|
37
42
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
```bash
|
|
43
|
+
# Run the tool
|
|
41
44
|
pt
|
|
42
45
|
```
|
|
43
46
|
|
|
44
|
-
##
|
|
45
|
-
|
|
46
|
-
### `pt`
|
|
47
|
-
Interactive prompt selection and generation. This is the default command that lets you:
|
|
48
|
-
- Search through all your prompts with fuzzy search
|
|
49
|
-
- Preview prompt content before selection
|
|
50
|
-
- Fill in template variables interactively
|
|
51
|
-
- View the generated result
|
|
52
|
-
|
|
53
|
-
### `pt init`
|
|
54
|
-
Initialize configuration interactively. Sets up:
|
|
55
|
-
- Prompt directories
|
|
56
|
-
- History tracking (optional)
|
|
57
|
-
- Annotation support (optional)
|
|
58
|
-
- Default coding tool configuration
|
|
59
|
-
|
|
60
|
-
### `pt add`
|
|
61
|
-
Create a new prompt interactively. Features:
|
|
62
|
-
- Guided prompt creation with metadata
|
|
63
|
-
- Automatic author detection from git
|
|
64
|
-
- Label/tag support
|
|
65
|
-
- Opens in your editor automatically
|
|
66
|
-
|
|
67
|
-
### `pt edit`
|
|
68
|
-
Edit existing prompts in your configured editor. Features:
|
|
69
|
-
- Interactive prompt selection
|
|
70
|
-
- Automatic editor detection ($VISUAL or $EDITOR)
|
|
71
|
-
- Fallback to common editors if not configured
|
|
72
|
-
|
|
73
|
-
### `pt run [tool] [args...]`
|
|
74
|
-
Execute prompts with external tools. Examples:
|
|
75
|
-
```bash
|
|
76
|
-
pt run # Use configured default tool
|
|
77
|
-
pt run claude # Send to Claude
|
|
78
|
-
pt run code - # Open in VS Code
|
|
79
|
-
pt run cat # Output to terminal
|
|
80
|
-
pt run -- --continue # Pass args to configured tool
|
|
81
|
-
pt run -h 3 # Re-run history entry #3
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
### `pt history [options]`
|
|
85
|
-
View prompt execution history. Options:
|
|
86
|
-
- `-l, --limit <number>` - Number of entries to show (default: 20)
|
|
87
|
-
- `-a, --all` - Show all history entries
|
|
88
|
-
|
|
89
|
-
### `pt annotate [history-number]`
|
|
90
|
-
Add notes to history entries. Features:
|
|
91
|
-
- Mark prompts as success/failure/partial
|
|
92
|
-
- Add searchable tags
|
|
93
|
-
- Write detailed notes in your editor
|
|
94
|
-
- Multiple annotations per history entry
|
|
95
|
-
|
|
96
|
-
### `pt example`
|
|
97
|
-
Generate an example prompt file to help you get started.
|
|
47
|
+
## Documentation
|
|
98
48
|
|
|
99
|
-
|
|
49
|
+
For comprehensive documentation, tutorials, and examples, visit our documentation site:
|
|
100
50
|
|
|
101
|
-
|
|
51
|
+
**📚 [View Full Documentation](https://apowers313.github.io/pupt/)**
|
|
102
52
|
|
|
103
|
-
|
|
104
|
-
-
|
|
105
|
-
-
|
|
106
|
-
-
|
|
107
|
-
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
### Prompt File Structure
|
|
112
|
-
|
|
113
|
-
```markdown
|
|
114
|
-
---
|
|
115
|
-
title: Your Prompt Title
|
|
116
|
-
labels: [tag1, tag2, tag3]
|
|
117
|
-
variables:
|
|
118
|
-
- name: variableName
|
|
119
|
-
type: input
|
|
120
|
-
message: "What to ask the user"
|
|
121
|
-
default: "Default value"
|
|
122
|
-
---
|
|
123
|
-
|
|
124
|
-
Your prompt content goes here with {{variableName}} substitution.
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
### Frontmatter Properties
|
|
128
|
-
|
|
129
|
-
The frontmatter section (between `---` markers) is optional and uses YAML format. Available properties:
|
|
130
|
-
|
|
131
|
-
#### `title` (string)
|
|
132
|
-
- **Purpose**: Display name for the prompt in the search interface
|
|
133
|
-
- **Default**: Filename without extension
|
|
134
|
-
- **Example**: `title: "API Documentation Generator"`
|
|
135
|
-
|
|
136
|
-
#### `labels` (array of strings)
|
|
137
|
-
- **Purpose**: Tags for categorizing and searching prompts
|
|
138
|
-
- **Default**: Empty array
|
|
139
|
-
- **Example**: `labels: [api, documentation, typescript]`
|
|
140
|
-
|
|
141
|
-
#### `variables` (array of objects)
|
|
142
|
-
- **Purpose**: Define user inputs required by the template
|
|
143
|
-
- **Default**: Empty array
|
|
144
|
-
- **Structure**: Each variable can have these properties:
|
|
145
|
-
- `name` (required): Variable identifier used in template
|
|
146
|
-
- `type`: Input type (`input`, `select`, `multiselect`, `confirm`, `editor`, `password`)
|
|
147
|
-
- `message`: Question to ask the user
|
|
148
|
-
- `default`: Default value
|
|
149
|
-
- `choices`: Array of options (for `select` and `multiselect` types)
|
|
150
|
-
- `validate`: Regex pattern for validation (as string)
|
|
151
|
-
|
|
152
|
-
### Complete Example Prompt File
|
|
153
|
-
|
|
154
|
-
```markdown
|
|
155
|
-
---
|
|
156
|
-
title: REST API Client Generator
|
|
157
|
-
labels: [api, client, typescript, generator]
|
|
158
|
-
variables:
|
|
159
|
-
- name: serviceName
|
|
160
|
-
type: input
|
|
161
|
-
message: "What is the name of your API service?"
|
|
162
|
-
default: "MyAPI"
|
|
163
|
-
validate: "^[A-Za-z][A-Za-z0-9]*$"
|
|
164
|
-
|
|
165
|
-
- name: baseUrl
|
|
166
|
-
type: input
|
|
167
|
-
message: "What is the base URL?"
|
|
168
|
-
default: "https://api.example.com"
|
|
169
|
-
|
|
170
|
-
- name: authType
|
|
171
|
-
type: select
|
|
172
|
-
message: "Choose authentication type:"
|
|
173
|
-
choices: ["none", "api-key", "bearer-token", "basic-auth"]
|
|
174
|
-
|
|
175
|
-
- name: methods
|
|
176
|
-
type: multiselect
|
|
177
|
-
message: "Which HTTP methods will you use?"
|
|
178
|
-
choices: ["GET", "POST", "PUT", "DELETE", "PATCH"]
|
|
179
|
-
|
|
180
|
-
- name: includeTests
|
|
181
|
-
type: confirm
|
|
182
|
-
message: "Generate test files?"
|
|
183
|
-
default: true
|
|
184
|
-
---
|
|
185
|
-
|
|
186
|
-
# {{serviceName}} API Client
|
|
187
|
-
|
|
188
|
-
Generate a TypeScript API client for {{serviceName}}.
|
|
189
|
-
|
|
190
|
-
## Configuration
|
|
191
|
-
- Base URL: {{baseUrl}}
|
|
192
|
-
- Authentication: {{authType}}
|
|
193
|
-
- Methods: {{methods}}
|
|
194
|
-
|
|
195
|
-
## Implementation Requirements
|
|
196
|
-
|
|
197
|
-
Create a fully typed TypeScript client with:
|
|
198
|
-
1. Type-safe request/response handling
|
|
199
|
-
2. Error handling with custom error classes
|
|
200
|
-
3. Retry logic with exponential backoff
|
|
201
|
-
4. Request/response interceptors
|
|
202
|
-
{{#if includeTests}}
|
|
203
|
-
5. Comprehensive test suite using Jest
|
|
204
|
-
6. Mock server for testing
|
|
205
|
-
{{/if}}
|
|
206
|
-
|
|
207
|
-
## Code Structure
|
|
208
|
-
|
|
209
|
-
```typescript
|
|
210
|
-
export class {{serviceName}}Client {
|
|
211
|
-
private baseUrl = '{{baseUrl}}';
|
|
212
|
-
|
|
213
|
-
constructor(private auth: AuthConfig) {}
|
|
214
|
-
|
|
215
|
-
// Implement methods for: {{methods}}
|
|
216
|
-
}
|
|
217
|
-
```
|
|
218
|
-
|
|
219
|
-
Generated on {{date}} at {{time}} by {{username}}
|
|
220
|
-
```
|
|
53
|
+
The documentation includes:
|
|
54
|
+
- **[Getting Started Guide](https://apowers313.github.io/pupt/guide/getting-started)** - Installation and first steps
|
|
55
|
+
- **[Prompt Templates](https://apowers313.github.io/pupt/guide/prompt-templates)** - Learn how to create dynamic prompts
|
|
56
|
+
- **[Command Reference](https://apowers313.github.io/pupt/commands/)** - Detailed information on all commands
|
|
57
|
+
- **[Configuration Guide](https://apowers313.github.io/pupt/guide/configuration)** - Customize PUPT to your needs
|
|
58
|
+
- **[Available Prompts](https://apowers313.github.io/pupt/prompts)** - Browse built-in prompt templates
|
|
59
|
+
- **[Troubleshooting](https://apowers313.github.io/pupt/guide/troubleshooting)** - Solutions to common issues
|
|
60
|
+
- **[Development Guide](https://apowers313.github.io/pupt/guide/development)** - Contributing and building from source
|
|
221
61
|
|
|
222
|
-
##
|
|
62
|
+
## Repository
|
|
223
63
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
#### `{{date}}`
|
|
229
|
-
- **Returns**: Current date in local format (e.g., "3/15/2024")
|
|
230
|
-
- **Example**: `Generated on {{date}}`
|
|
231
|
-
|
|
232
|
-
#### `{{time}}`
|
|
233
|
-
- **Returns**: Current time in local format (e.g., "2:30:45 PM")
|
|
234
|
-
- **Example**: `Created at {{time}}`
|
|
235
|
-
|
|
236
|
-
#### `{{datetime}}`
|
|
237
|
-
- **Returns**: Current date and time in local format
|
|
238
|
-
- **Example**: `Timestamp: {{datetime}}`
|
|
239
|
-
|
|
240
|
-
#### `{{timestamp}}`
|
|
241
|
-
- **Returns**: Unix timestamp in milliseconds
|
|
242
|
-
- **Example**: `Build: {{timestamp}}`
|
|
243
|
-
|
|
244
|
-
#### `{{uuid}}`
|
|
245
|
-
- **Returns**: A new UUID v4
|
|
246
|
-
- **Example**: `Request ID: {{uuid}}`
|
|
247
|
-
|
|
248
|
-
#### `{{username}}`
|
|
249
|
-
- **Returns**: Current system username
|
|
250
|
-
- **Example**: `Author: {{username}}`
|
|
251
|
-
|
|
252
|
-
#### `{{hostname}}`
|
|
253
|
-
- **Returns**: Machine hostname
|
|
254
|
-
- **Example**: `Generated on {{hostname}}`
|
|
255
|
-
|
|
256
|
-
#### `{{cwd}}`
|
|
257
|
-
- **Returns**: Current working directory path
|
|
258
|
-
- **Example**: `Project path: {{cwd}}`
|
|
259
|
-
|
|
260
|
-
### Input Helpers
|
|
261
|
-
|
|
262
|
-
These helpers collect information from users interactively:
|
|
263
|
-
|
|
264
|
-
#### `{{input "name" "message"}}`
|
|
265
|
-
- **Purpose**: Collect text input
|
|
266
|
-
- **Parameters**:
|
|
267
|
-
- `name`: Variable name to store the value
|
|
268
|
-
- `message` (optional): Prompt message
|
|
269
|
-
- **Example**: `{{input "projectName" "What is your project name?"}}`
|
|
270
|
-
|
|
271
|
-
#### `{{select "name" "message"}}`
|
|
272
|
-
- **Purpose**: Single choice selection
|
|
273
|
-
- **Parameters**:
|
|
274
|
-
- `name`: Variable name
|
|
275
|
-
- `message` (optional): Prompt message
|
|
276
|
-
- **Note**: Choices come from variable definition
|
|
277
|
-
- **Example**: `{{select "language" "Choose a language:"}}`
|
|
278
|
-
|
|
279
|
-
#### `{{multiselect "name" "message"}}`
|
|
280
|
-
- **Purpose**: Multiple choice selection
|
|
281
|
-
- **Parameters**: Same as select
|
|
282
|
-
- **Returns**: Comma-separated values
|
|
283
|
-
- **Example**: `{{multiselect "features" "Select features:"}}`
|
|
284
|
-
|
|
285
|
-
#### `{{confirm "name" "message"}}`
|
|
286
|
-
- **Purpose**: Yes/no question
|
|
287
|
-
- **Parameters**: Same as input
|
|
288
|
-
- **Returns**: `true` or `false`
|
|
289
|
-
- **Example**: `{{confirm "useTypeScript" "Use TypeScript?"}}`
|
|
290
|
-
|
|
291
|
-
#### `{{editor "name" "message"}}`
|
|
292
|
-
- **Purpose**: Open text editor for multi-line input
|
|
293
|
-
- **Parameters**: Same as input
|
|
294
|
-
- **Example**: `{{editor "description" "Enter description:"}}`
|
|
295
|
-
|
|
296
|
-
#### `{{password "name" "message"}}`
|
|
297
|
-
- **Purpose**: Masked password input
|
|
298
|
-
- **Parameters**: Same as input
|
|
299
|
-
- **Note**: Values are masked in history
|
|
300
|
-
- **Example**: `{{password "apiKey" "Enter API key:"}}`
|
|
301
|
-
|
|
302
|
-
### Variable Substitution
|
|
303
|
-
|
|
304
|
-
Once a variable is defined (either through frontmatter or input helpers), it can be referenced anywhere in the template:
|
|
305
|
-
|
|
306
|
-
```markdown
|
|
307
|
-
Project: {{projectName}}
|
|
308
|
-
Path: /src/{{projectName}}/index.ts
|
|
309
|
-
Welcome to {{projectName}}!
|
|
310
|
-
```
|
|
311
|
-
|
|
312
|
-
Variables are cached, so asking for the same variable multiple times will reuse the first value.
|
|
313
|
-
|
|
314
|
-
## Configuration File
|
|
315
|
-
|
|
316
|
-
### Overview
|
|
317
|
-
|
|
318
|
-
The configuration file (`.pt-config.json`, `.pt-config.yaml`, or `.pt-config.js`) controls how the prompt tool behaves. The tool searches for configuration files in:
|
|
319
|
-
1. Current directory and all parent directories
|
|
320
|
-
2. Your home directory
|
|
321
|
-
3. Platform-specific config directories
|
|
322
|
-
|
|
323
|
-
Multiple config files are merged, with closer files taking precedence.
|
|
324
|
-
|
|
325
|
-
### Configuration Format
|
|
326
|
-
|
|
327
|
-
```json
|
|
328
|
-
{
|
|
329
|
-
"promptDirs": ["./.prompts", "~/my-prompts"],
|
|
330
|
-
"historyDir": "~/.pt/history",
|
|
331
|
-
"annotationDir": "~/.pt/history",
|
|
332
|
-
"codingTool": "claude",
|
|
333
|
-
"codingToolArgs": ["--model", "claude-3"],
|
|
334
|
-
"codingToolOptions": {
|
|
335
|
-
"Continue with context?": "--continue",
|
|
336
|
-
"Use verbose output?": "--verbose"
|
|
337
|
-
},
|
|
338
|
-
"partials": {
|
|
339
|
-
"header": {
|
|
340
|
-
"type": "inline",
|
|
341
|
-
"value": "Generated by {{username}} on {{date}}"
|
|
342
|
-
},
|
|
343
|
-
"footer": {
|
|
344
|
-
"type": "file",
|
|
345
|
-
"path": "~/.pt/partials/footer.md"
|
|
346
|
-
}
|
|
347
|
-
},
|
|
348
|
-
"version": "2.0.0"
|
|
349
|
-
}
|
|
350
|
-
```
|
|
351
|
-
|
|
352
|
-
### Configuration Fields
|
|
353
|
-
|
|
354
|
-
#### `promptDirs` (array of strings)
|
|
355
|
-
- **Purpose**: Directories to search for prompt files
|
|
356
|
-
- **Default**: `["./.prompts"]`
|
|
357
|
-
- **Notes**:
|
|
358
|
-
- Searches recursively for `.md` files
|
|
359
|
-
- Supports `~` for home directory
|
|
360
|
-
- Relative paths are resolved from config file location
|
|
361
|
-
- **Example**: `["./.prompts", "~/global-prompts", "/usr/share/pt/prompts"]`
|
|
362
|
-
|
|
363
|
-
#### `historyDir` (string, optional)
|
|
364
|
-
- **Purpose**: Directory to save generated prompts history
|
|
365
|
-
- **Default**: None (history disabled)
|
|
366
|
-
- **Notes**:
|
|
367
|
-
- Creates timestamped files with metadata
|
|
368
|
-
- Sensitive values (passwords, API keys) are automatically masked
|
|
369
|
-
- Supports `~` for home directory
|
|
370
|
-
- **Example**: `"~/.pt/history"`
|
|
371
|
-
|
|
372
|
-
#### `annotationDir` (string, optional)
|
|
373
|
-
- **Purpose**: Directory to save annotations for history entries
|
|
374
|
-
- **Default**: None (annotations disabled)
|
|
375
|
-
- **Notes**:
|
|
376
|
-
- Requires history to be enabled
|
|
377
|
-
- Stores notes, tags, and success/failure status
|
|
378
|
-
- Supports `~` for home directory
|
|
379
|
-
- **Example**: `"~/.pt/history"`
|
|
380
|
-
|
|
381
|
-
#### `codingTool` (string, optional)
|
|
382
|
-
- **Purpose**: Default tool to use with `pt run`
|
|
383
|
-
- **Default**: `"claude"`
|
|
384
|
-
- **Notes**:
|
|
385
|
-
- Can be any command-line tool that accepts stdin
|
|
386
|
-
- Override with `pt run <tool>`
|
|
387
|
-
- **Example**: `"claude"`, `"gpt"`, `"code -"`
|
|
388
|
-
|
|
389
|
-
#### `codingToolArgs` (array of strings, optional)
|
|
390
|
-
- **Purpose**: Default arguments for the coding tool
|
|
391
|
-
- **Default**: `[]`
|
|
392
|
-
- **Notes**:
|
|
393
|
-
- Always passed to the tool
|
|
394
|
-
- Additional args can be added with `pt run -- <args>`
|
|
395
|
-
- **Example**: `["--model", "claude-3-opus"]`
|
|
396
|
-
|
|
397
|
-
#### `codingToolOptions` (object, optional)
|
|
398
|
-
- **Purpose**: Interactive options to prompt for when running
|
|
399
|
-
- **Default**: `{ "Continue with last context?": "--continue" }`
|
|
400
|
-
- **Structure**: Object where keys are questions and values are arguments
|
|
401
|
-
- **Notes**:
|
|
402
|
-
- User is prompted for each option
|
|
403
|
-
- Arguments added only if user answers "yes"
|
|
404
|
-
- **Example**:
|
|
405
|
-
```json
|
|
406
|
-
{
|
|
407
|
-
"Continue with context?": "--continue",
|
|
408
|
-
"Use verbose output?": "--verbose",
|
|
409
|
-
"Enable debug mode?": "--debug"
|
|
410
|
-
}
|
|
411
|
-
```
|
|
412
|
-
|
|
413
|
-
#### `partials` (object, optional)
|
|
414
|
-
- **Purpose**: Define reusable template fragments
|
|
415
|
-
- **Default**: None
|
|
416
|
-
- **Structure**: Object where keys are partial names and values define the partial:
|
|
417
|
-
- `type`: Either "inline" or "file"
|
|
418
|
-
- `value`: Template content (for inline type)
|
|
419
|
-
- `path`: Path to file (for file type)
|
|
420
|
-
- **Usage**: Reference in templates with `{{> partialName}}`
|
|
421
|
-
- **Example**:
|
|
422
|
-
```json
|
|
423
|
-
{
|
|
424
|
-
"partials": {
|
|
425
|
-
"copyright": {
|
|
426
|
-
"type": "inline",
|
|
427
|
-
"value": "Copyright (c) {{year}} {{company}}"
|
|
428
|
-
},
|
|
429
|
-
"header": {
|
|
430
|
-
"type": "file",
|
|
431
|
-
"path": "~/.pt/partials/header.md"
|
|
432
|
-
}
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
```
|
|
436
|
-
|
|
437
|
-
### Configuration Examples
|
|
438
|
-
|
|
439
|
-
#### Minimal Configuration
|
|
440
|
-
```json
|
|
441
|
-
{
|
|
442
|
-
"promptDirs": ["./.prompts"]
|
|
443
|
-
}
|
|
444
|
-
```
|
|
445
|
-
|
|
446
|
-
#### Development Team Configuration
|
|
447
|
-
```json
|
|
448
|
-
{
|
|
449
|
-
"promptDirs": [
|
|
450
|
-
"./.prompts",
|
|
451
|
-
"~/team-prompts",
|
|
452
|
-
"/shared/company-prompts"
|
|
453
|
-
],
|
|
454
|
-
"historyDir": "~/.pt/history",
|
|
455
|
-
"annotationDir": "~/.pt/history",
|
|
456
|
-
"codingTool": "claude",
|
|
457
|
-
"codingToolArgs": ["--model", "claude-3-opus"],
|
|
458
|
-
"codingToolOptions": {
|
|
459
|
-
"Continue with context?": "--continue",
|
|
460
|
-
"Use company guidelines?": "--guidelines=/shared/guidelines.md"
|
|
461
|
-
},
|
|
462
|
-
"partials": {
|
|
463
|
-
"companyHeader": {
|
|
464
|
-
"type": "inline",
|
|
465
|
-
"value": "/* Company Confidential - {{date}} */"
|
|
466
|
-
}
|
|
467
|
-
},
|
|
468
|
-
"version": "2.0.0"
|
|
469
|
-
}
|
|
470
|
-
```
|
|
471
|
-
|
|
472
|
-
#### Personal Configuration
|
|
473
|
-
```yaml
|
|
474
|
-
promptDirs:
|
|
475
|
-
- ~/my-prompts
|
|
476
|
-
- ~/work-prompts
|
|
477
|
-
- ~/personal-prompts
|
|
478
|
-
historyDir: ~/.pt/history
|
|
479
|
-
annotationDir: ~/.pt/annotations
|
|
480
|
-
codingTool: gpt
|
|
481
|
-
codingToolArgs:
|
|
482
|
-
- --temperature
|
|
483
|
-
- "0.7"
|
|
484
|
-
version: "2.0.0"
|
|
485
|
-
```
|
|
486
|
-
|
|
487
|
-
#### Minimal Configuration with History
|
|
488
|
-
```json
|
|
489
|
-
{
|
|
490
|
-
"promptDirs": ["./.prompts"],
|
|
491
|
-
"historyDir": "./.pthistory",
|
|
492
|
-
"version": "2.0.0"
|
|
493
|
-
}
|
|
494
|
-
```
|
|
495
|
-
|
|
496
|
-
## Development
|
|
497
|
-
|
|
498
|
-
```bash
|
|
499
|
-
# Install dependencies
|
|
500
|
-
npm install
|
|
501
|
-
|
|
502
|
-
# Run tests
|
|
503
|
-
npm test
|
|
504
|
-
|
|
505
|
-
# Run tests with coverage
|
|
506
|
-
npm run test:coverage
|
|
507
|
-
|
|
508
|
-
# Build
|
|
509
|
-
npm run build
|
|
510
|
-
|
|
511
|
-
# Run locally
|
|
512
|
-
node dist/cli.js
|
|
513
|
-
```
|
|
64
|
+
- **GitHub**: [https://github.com/apowers313/pupt](https://github.com/apowers313/pupt)
|
|
65
|
+
- **Issues**: [https://github.com/apowers313/pupt/issues](https://github.com/apowers313/pupt/issues)
|
|
66
|
+
- **Author**: Adam Powers <apowers@ato.ms>
|
|
514
67
|
|
|
515
68
|
## License
|
|
516
69
|
|
|
@@ -135,11 +135,11 @@ export class AnnotationAnalyzer {
|
|
|
135
135
|
});
|
|
136
136
|
return detected;
|
|
137
137
|
}
|
|
138
|
-
extractPromptName(
|
|
139
|
-
//
|
|
140
|
-
//
|
|
141
|
-
|
|
142
|
-
return
|
|
138
|
+
extractPromptName(_historyFile) {
|
|
139
|
+
// For the current filename format (YYYYMMDD-HHMMSS-randomhex.json),
|
|
140
|
+
// we can't extract the prompt name from the filename alone.
|
|
141
|
+
// This should be handled by the caller using the actual history entry data.
|
|
142
|
+
return 'unknown';
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
145
|
//# sourceMappingURL=annotation-analyzer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annotation-analyzer.js","sourceRoot":"","sources":["../../src/annotations/annotation-analyzer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"annotation-analyzer.js","sourceRoot":"","sources":["../../src/annotations/annotation-analyzer.ts"],"names":[],"mappings":"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"}
|