@prompd/cli 0.3.3
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 +162 -0
- package/bin/prompd.js +23 -0
- package/dist/commands/cache.d.ts +3 -0
- package/dist/commands/cache.d.ts.map +1 -0
- package/dist/commands/cache.js +199 -0
- package/dist/commands/cache.js.map +1 -0
- package/dist/commands/compile.d.ts +9 -0
- package/dist/commands/compile.d.ts.map +1 -0
- package/dist/commands/compile.js +104 -0
- package/dist/commands/compile.js.map +1 -0
- package/dist/commands/config.d.ts +7 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +212 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/create.d.ts +3 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +183 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/deps.d.ts +3 -0
- package/dist/commands/deps.d.ts.map +1 -0
- package/dist/commands/deps.js +192 -0
- package/dist/commands/deps.js.map +1 -0
- package/dist/commands/explain.d.ts +3 -0
- package/dist/commands/explain.d.ts.map +1 -0
- package/dist/commands/explain.js +227 -0
- package/dist/commands/explain.js.map +1 -0
- package/dist/commands/git.d.ts +3 -0
- package/dist/commands/git.d.ts.map +1 -0
- package/dist/commands/git.js +306 -0
- package/dist/commands/git.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +177 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.d.ts +3 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +126 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/mcp.d.ts +3 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +326 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/namespace.d.ts +3 -0
- package/dist/commands/namespace.d.ts.map +1 -0
- package/dist/commands/namespace.js +113 -0
- package/dist/commands/namespace.js.map +1 -0
- package/dist/commands/package.d.ts +23 -0
- package/dist/commands/package.d.ts.map +1 -0
- package/dist/commands/package.js +746 -0
- package/dist/commands/package.js.map +1 -0
- package/dist/commands/provider.d.ts +3 -0
- package/dist/commands/provider.d.ts.map +1 -0
- package/dist/commands/provider.js +285 -0
- package/dist/commands/provider.js.map +1 -0
- package/dist/commands/registry.d.ts +9 -0
- package/dist/commands/registry.d.ts.map +1 -0
- package/dist/commands/registry.js +361 -0
- package/dist/commands/registry.js.map +1 -0
- package/dist/commands/run.d.ts +3 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +157 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/show.d.ts +3 -0
- package/dist/commands/show.d.ts.map +1 -0
- package/dist/commands/show.js +90 -0
- package/dist/commands/show.js.map +1 -0
- package/dist/commands/uninstall.d.ts +3 -0
- package/dist/commands/uninstall.d.ts.map +1 -0
- package/dist/commands/uninstall.js +95 -0
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/commands/validate.d.ts +3 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +57 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/commands/version.d.ts +3 -0
- package/dist/commands/version.d.ts.map +1 -0
- package/dist/commands/version.js +166 -0
- package/dist/commands/version.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +388 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/auth.d.ts +164 -0
- package/dist/lib/auth.d.ts.map +1 -0
- package/dist/lib/auth.js +388 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/compiler/file-system.d.ts +178 -0
- package/dist/lib/compiler/file-system.d.ts.map +1 -0
- package/dist/lib/compiler/file-system.js +440 -0
- package/dist/lib/compiler/file-system.js.map +1 -0
- package/dist/lib/compiler/formatters/anthropic.d.ts +21 -0
- package/dist/lib/compiler/formatters/anthropic.d.ts.map +1 -0
- package/dist/lib/compiler/formatters/anthropic.js +95 -0
- package/dist/lib/compiler/formatters/anthropic.js.map +1 -0
- package/dist/lib/compiler/formatters/markdown.d.ts +17 -0
- package/dist/lib/compiler/formatters/markdown.d.ts.map +1 -0
- package/dist/lib/compiler/formatters/markdown.js +114 -0
- package/dist/lib/compiler/formatters/markdown.js.map +1 -0
- package/dist/lib/compiler/formatters/openai.d.ts +21 -0
- package/dist/lib/compiler/formatters/openai.d.ts.map +1 -0
- package/dist/lib/compiler/formatters/openai.js +98 -0
- package/dist/lib/compiler/formatters/openai.js.map +1 -0
- package/dist/lib/compiler/index.d.ts +56 -0
- package/dist/lib/compiler/index.d.ts.map +1 -0
- package/dist/lib/compiler/index.js +165 -0
- package/dist/lib/compiler/index.js.map +1 -0
- package/dist/lib/compiler/language-map.d.ts +31 -0
- package/dist/lib/compiler/language-map.d.ts.map +1 -0
- package/dist/lib/compiler/language-map.js +156 -0
- package/dist/lib/compiler/language-map.js.map +1 -0
- package/dist/lib/compiler/package-resolver.d.ts +68 -0
- package/dist/lib/compiler/package-resolver.d.ts.map +1 -0
- package/dist/lib/compiler/package-resolver.js +254 -0
- package/dist/lib/compiler/package-resolver.js.map +1 -0
- package/dist/lib/compiler/pipeline.d.ts +53 -0
- package/dist/lib/compiler/pipeline.d.ts.map +1 -0
- package/dist/lib/compiler/pipeline.js +209 -0
- package/dist/lib/compiler/pipeline.js.map +1 -0
- package/dist/lib/compiler/prompd-loader.d.ts +108 -0
- package/dist/lib/compiler/prompd-loader.d.ts.map +1 -0
- package/dist/lib/compiler/prompd-loader.js +270 -0
- package/dist/lib/compiler/prompd-loader.js.map +1 -0
- package/dist/lib/compiler/section-override.d.ts +40 -0
- package/dist/lib/compiler/section-override.d.ts.map +1 -0
- package/dist/lib/compiler/section-override.js +296 -0
- package/dist/lib/compiler/section-override.js.map +1 -0
- package/dist/lib/compiler/stages/assets.d.ts +71 -0
- package/dist/lib/compiler/stages/assets.d.ts.map +1 -0
- package/dist/lib/compiler/stages/assets.js +456 -0
- package/dist/lib/compiler/stages/assets.js.map +1 -0
- package/dist/lib/compiler/stages/codegen.d.ts +17 -0
- package/dist/lib/compiler/stages/codegen.d.ts.map +1 -0
- package/dist/lib/compiler/stages/codegen.js +64 -0
- package/dist/lib/compiler/stages/codegen.js.map +1 -0
- package/dist/lib/compiler/stages/dependency.d.ts +38 -0
- package/dist/lib/compiler/stages/dependency.d.ts.map +1 -0
- package/dist/lib/compiler/stages/dependency.js +307 -0
- package/dist/lib/compiler/stages/dependency.js.map +1 -0
- package/dist/lib/compiler/stages/lexical.d.ts +19 -0
- package/dist/lib/compiler/stages/lexical.d.ts.map +1 -0
- package/dist/lib/compiler/stages/lexical.js +92 -0
- package/dist/lib/compiler/stages/lexical.js.map +1 -0
- package/dist/lib/compiler/stages/semantic.d.ts +20 -0
- package/dist/lib/compiler/stages/semantic.d.ts.map +1 -0
- package/dist/lib/compiler/stages/semantic.js +166 -0
- package/dist/lib/compiler/stages/semantic.js.map +1 -0
- package/dist/lib/compiler/stages/template.d.ts +94 -0
- package/dist/lib/compiler/stages/template.d.ts.map +1 -0
- package/dist/lib/compiler/stages/template.js +1044 -0
- package/dist/lib/compiler/stages/template.js.map +1 -0
- package/dist/lib/compiler/types.d.ts +200 -0
- package/dist/lib/compiler/types.d.ts.map +1 -0
- package/dist/lib/compiler/types.js +137 -0
- package/dist/lib/compiler/types.js.map +1 -0
- package/dist/lib/config.d.ts +29 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +375 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/errors.d.ts +19 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +47 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/executor.d.ts +18 -0
- package/dist/lib/executor.d.ts.map +1 -0
- package/dist/lib/executor.js +372 -0
- package/dist/lib/executor.js.map +1 -0
- package/dist/lib/git.d.ts +74 -0
- package/dist/lib/git.d.ts.map +1 -0
- package/dist/lib/git.js +254 -0
- package/dist/lib/git.js.map +1 -0
- package/dist/lib/index.d.ts +43 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +108 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/mcp.d.ts +42 -0
- package/dist/lib/mcp.d.ts.map +1 -0
- package/dist/lib/mcp.js +477 -0
- package/dist/lib/mcp.js.map +1 -0
- package/dist/lib/model-updater.d.ts +51 -0
- package/dist/lib/model-updater.d.ts.map +1 -0
- package/dist/lib/model-updater.js +275 -0
- package/dist/lib/model-updater.js.map +1 -0
- package/dist/lib/parser.d.ts +9 -0
- package/dist/lib/parser.d.ts.map +1 -0
- package/dist/lib/parser.js +197 -0
- package/dist/lib/parser.js.map +1 -0
- package/dist/lib/registry.d.ts +183 -0
- package/dist/lib/registry.d.ts.map +1 -0
- package/dist/lib/registry.js +786 -0
- package/dist/lib/registry.js.map +1 -0
- package/dist/lib/rpc-server.d.ts +78 -0
- package/dist/lib/rpc-server.d.ts.map +1 -0
- package/dist/lib/rpc-server.js +404 -0
- package/dist/lib/rpc-server.js.map +1 -0
- package/dist/lib/security.d.ts +120 -0
- package/dist/lib/security.d.ts.map +1 -0
- package/dist/lib/security.js +478 -0
- package/dist/lib/security.js.map +1 -0
- package/dist/lib/validation.d.ts +106 -0
- package/dist/lib/validation.d.ts.map +1 -0
- package/dist/lib/validation.js +398 -0
- package/dist/lib/validation.js.map +1 -0
- package/dist/lib/version.d.ts +29 -0
- package/dist/lib/version.d.ts.map +1 -0
- package/dist/lib/version.js +202 -0
- package/dist/lib/version.js.map +1 -0
- package/dist/lib/workflow-engine.d.ts +161 -0
- package/dist/lib/workflow-engine.d.ts.map +1 -0
- package/dist/lib/workflow-engine.js +422 -0
- package/dist/lib/workflow-engine.js.map +1 -0
- package/dist/lib/workflow.d.ts +102 -0
- package/dist/lib/workflow.d.ts.map +1 -0
- package/dist/lib/workflow.js +228 -0
- package/dist/lib/workflow.js.map +1 -0
- package/dist/server.d.ts +8 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +134 -0
- package/dist/server.js.map +1 -0
- package/dist/types/index.d.ts +116 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +144 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +104 -0
package/README.md
ADDED
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# @prompd/cli
|
|
2
|
+
|
|
3
|
+
A TypeScript/Node.js implementation of the Prompd CLI, providing full compatibility with Python and Go versions. Can be used both as a **command-line tool** and as a **library** in TypeScript/React applications.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# As a CLI tool (global)
|
|
9
|
+
npm install -g @prompd/cli
|
|
10
|
+
|
|
11
|
+
# As a library in your project
|
|
12
|
+
npm install @prompd/cli
|
|
13
|
+
|
|
14
|
+
# From source
|
|
15
|
+
npm install
|
|
16
|
+
npm run build
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Features
|
|
20
|
+
|
|
21
|
+
✅ **Dual-purpose package:**
|
|
22
|
+
- **CLI tool** with full feature parity with Python and Go CLIs
|
|
23
|
+
- **Library** for programmatic use in TypeScript/React/Node.js apps
|
|
24
|
+
|
|
25
|
+
✅ **Core capabilities:**
|
|
26
|
+
- `.prmd` file parsing and validation
|
|
27
|
+
- Package management (create, validate, publish)
|
|
28
|
+
- Registry operations (login, search, install)
|
|
29
|
+
- Provider configuration and management
|
|
30
|
+
- Security scanning (secrets detection)
|
|
31
|
+
- Input validation and sanitization
|
|
32
|
+
|
|
33
|
+
## Usage as a Library
|
|
34
|
+
|
|
35
|
+
```typescript
|
|
36
|
+
import { PrompdParser, ConfigManager, validatePackageName } from '@prompd/cli';
|
|
37
|
+
|
|
38
|
+
// Parse a .prmd file
|
|
39
|
+
const parser = new PrompdParser();
|
|
40
|
+
const prompd = await parser.parseFile('./example.prmd');
|
|
41
|
+
console.log('Prompt ID:', prompd.metadata.id);
|
|
42
|
+
|
|
43
|
+
// Validate a file
|
|
44
|
+
const issues = await parser.validateFile('./example.prmd');
|
|
45
|
+
issues.forEach(issue => console.log(`[${issue.level}] ${issue.message}`));
|
|
46
|
+
|
|
47
|
+
// Work with configuration
|
|
48
|
+
const config = new ConfigManager();
|
|
49
|
+
const currentConfig = config.load();
|
|
50
|
+
console.log('Provider:', currentConfig.defaultProvider);
|
|
51
|
+
|
|
52
|
+
// Validate package names
|
|
53
|
+
const isValid = validatePackageName('@myorg/my-prompt');
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**See [examples/library-usage.ts](examples/library-usage.ts) and [examples/library-usage.js](examples/library-usage.js) for complete examples.**
|
|
57
|
+
|
|
58
|
+
## CLI Commands
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
# Validation & Display
|
|
62
|
+
prompd validate <file> # Validate .prmd file
|
|
63
|
+
prompd list [directory] # List all .prmd files
|
|
64
|
+
prompd show <file> # Show file details
|
|
65
|
+
|
|
66
|
+
# Package Management
|
|
67
|
+
prompd package create <dir> -o <output.pdpkg> # Create package
|
|
68
|
+
prompd package validate <package.pdpkg> # Validate package
|
|
69
|
+
prompd pack <dir> # Quick package create (alias)
|
|
70
|
+
|
|
71
|
+
# Registry Operations
|
|
72
|
+
prompd login # Interactive authentication
|
|
73
|
+
prompd logout # Clear credentials
|
|
74
|
+
prompd publish <package.pdpkg> # Publish to registry
|
|
75
|
+
prompd search <query> # Search packages
|
|
76
|
+
prompd install @namespace/package@version
|
|
77
|
+
prompd versions <package> # List versions
|
|
78
|
+
prompd registry info <package> # Package details
|
|
79
|
+
|
|
80
|
+
# Configuration
|
|
81
|
+
prompd config show # Show current config
|
|
82
|
+
prompd config provider list # List providers
|
|
83
|
+
prompd config provider show <name> # Show provider details
|
|
84
|
+
prompd config provider add <name> <url> <models...>
|
|
85
|
+
prompd config provider remove <name>
|
|
86
|
+
prompd config provider setkey <provider> <key>
|
|
87
|
+
prompd config registry list
|
|
88
|
+
prompd config registry add <name> <url>
|
|
89
|
+
prompd config registry remove <name>
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Configuration
|
|
93
|
+
|
|
94
|
+
Configuration is stored in `~/.prompd/config.yaml` or via environment variables:
|
|
95
|
+
|
|
96
|
+
```yaml
|
|
97
|
+
apiKeys:
|
|
98
|
+
openai: your-api-key
|
|
99
|
+
anthropic: your-api-key
|
|
100
|
+
defaultProvider: openai
|
|
101
|
+
defaultModel: gpt-4
|
|
102
|
+
customProviders:
|
|
103
|
+
local:
|
|
104
|
+
baseUrl: http://localhost:8080
|
|
105
|
+
models: [model1, model2]
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Environment variables:
|
|
109
|
+
- `OPENAI_API_KEY`
|
|
110
|
+
- `ANTHROPIC_API_KEY`
|
|
111
|
+
- `PROMPD_DEFAULT_PROVIDER`
|
|
112
|
+
- `PROMPD_DEFAULT_MODEL`
|
|
113
|
+
|
|
114
|
+
## Development
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
# Install dependencies
|
|
118
|
+
npm install
|
|
119
|
+
|
|
120
|
+
# Build TypeScript to JavaScript
|
|
121
|
+
npm run build
|
|
122
|
+
|
|
123
|
+
# Run tests
|
|
124
|
+
npm test
|
|
125
|
+
|
|
126
|
+
# Development mode (uses ts-node)
|
|
127
|
+
npm run dev -- <command>
|
|
128
|
+
|
|
129
|
+
# Watch mode for tests
|
|
130
|
+
npm run test:watch
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Architecture
|
|
134
|
+
|
|
135
|
+
```
|
|
136
|
+
cli/npm/
|
|
137
|
+
├── bin/ # Executable wrapper
|
|
138
|
+
├── src/
|
|
139
|
+
│ ├── commands/ # CLI command implementations
|
|
140
|
+
│ ├── lib/ # Core libraries (parser, executor, config)
|
|
141
|
+
│ └── types/ # TypeScript type definitions
|
|
142
|
+
├── tests/ # Jest unit tests
|
|
143
|
+
└── dist/ # Compiled JavaScript output
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Testing
|
|
147
|
+
|
|
148
|
+
The implementation includes comprehensive unit tests using Jest:
|
|
149
|
+
|
|
150
|
+
- Parser validation tests
|
|
151
|
+
- Configuration management tests
|
|
152
|
+
- LLM executor tests (mocked)
|
|
153
|
+
- Version management tests
|
|
154
|
+
- Integration tests
|
|
155
|
+
|
|
156
|
+
Run tests with: `npm test`
|
|
157
|
+
|
|
158
|
+
## Compatibility
|
|
159
|
+
|
|
160
|
+
- Node.js >= 16.0.0
|
|
161
|
+
- Works on Windows, macOS, and Linux
|
|
162
|
+
- Full compatibility with Python and Go CLI versions
|
package/bin/prompd.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// Simple wrapper to handle both development and production environments
|
|
4
|
+
const path = require('path');
|
|
5
|
+
const fs = require('fs');
|
|
6
|
+
|
|
7
|
+
// Check if we're running from built dist or source
|
|
8
|
+
const distPath = path.join(__dirname, '..', 'dist', 'index.js');
|
|
9
|
+
const srcPath = path.join(__dirname, '..', 'src', 'index.ts');
|
|
10
|
+
|
|
11
|
+
if (fs.existsSync(distPath)) {
|
|
12
|
+
// Production: use built JavaScript
|
|
13
|
+
require(distPath);
|
|
14
|
+
} else if (fs.existsSync(srcPath)) {
|
|
15
|
+
// Development: use TypeScript with ts-node
|
|
16
|
+
require('ts-node').register({
|
|
17
|
+
project: path.join(__dirname, '..', 'tsconfig.json')
|
|
18
|
+
});
|
|
19
|
+
require(srcPath);
|
|
20
|
+
} else {
|
|
21
|
+
console.error('Error: Could not find prompd CLI files. Please run "npm run build" first.');
|
|
22
|
+
process.exit(1);
|
|
23
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/commands/cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,kBAAkB,IAAI,OAAO,CAkG5C"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.createCacheCommand = createCacheCommand;
|
|
40
|
+
const commander_1 = require("commander");
|
|
41
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
42
|
+
const fs = __importStar(require("fs-extra"));
|
|
43
|
+
const path = __importStar(require("path"));
|
|
44
|
+
const os = __importStar(require("os"));
|
|
45
|
+
function createCacheCommand() {
|
|
46
|
+
const cacheCommand = new commander_1.Command('cache');
|
|
47
|
+
cacheCommand
|
|
48
|
+
.description('Package cache management');
|
|
49
|
+
// List cached packages
|
|
50
|
+
const listCommand = new commander_1.Command('list');
|
|
51
|
+
listCommand
|
|
52
|
+
.description('List cached packages')
|
|
53
|
+
.action(async () => {
|
|
54
|
+
try {
|
|
55
|
+
const cacheDir = getCacheDirectory();
|
|
56
|
+
const packages = await listCachedPackages(cacheDir);
|
|
57
|
+
if (packages.length === 0) {
|
|
58
|
+
console.log(chalk_1.default.yellow('No cached packages found.'));
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
console.log(chalk_1.default.bold(`\nCached Packages (${packages.length} total):\n`));
|
|
62
|
+
packages.forEach((pkg, index) => {
|
|
63
|
+
console.log(`${chalk_1.default.cyan(`${index + 1}.`)} ${chalk_1.default.bold(pkg.name)}@${chalk_1.default.green(pkg.version)}`);
|
|
64
|
+
if (pkg.description) {
|
|
65
|
+
console.log(` ${chalk_1.default.dim(pkg.description)}`);
|
|
66
|
+
}
|
|
67
|
+
console.log(` ${chalk_1.default.dim(`Path: ${pkg.path}`)}`);
|
|
68
|
+
console.log();
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
console.error(chalk_1.default.red(`Failed to list cache: ${error}`));
|
|
73
|
+
process.exit(1);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
// Clear cache
|
|
77
|
+
const clearCommand = new commander_1.Command('clear');
|
|
78
|
+
clearCommand
|
|
79
|
+
.description('Clear the package cache')
|
|
80
|
+
.action(async () => {
|
|
81
|
+
try {
|
|
82
|
+
const cacheDir = getCacheDirectory();
|
|
83
|
+
if (!await fs.pathExists(cacheDir)) {
|
|
84
|
+
console.log(chalk_1.default.yellow('Cache is already empty.'));
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
console.log(chalk_1.default.dim('Clearing package cache...'));
|
|
88
|
+
// Remove cache directory
|
|
89
|
+
await fs.remove(cacheDir);
|
|
90
|
+
// Recreate empty cache directory
|
|
91
|
+
await fs.ensureDir(cacheDir);
|
|
92
|
+
console.log(chalk_1.default.green('✓ Package cache cleared successfully.'));
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
console.error(chalk_1.default.red(`Failed to clear cache: ${error}`));
|
|
96
|
+
process.exit(1);
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
// Cache info
|
|
100
|
+
const infoCommand = new commander_1.Command('info');
|
|
101
|
+
infoCommand
|
|
102
|
+
.description('Show cache information')
|
|
103
|
+
.action(async () => {
|
|
104
|
+
try {
|
|
105
|
+
const cacheDir = getCacheDirectory();
|
|
106
|
+
const packages = await listCachedPackages(cacheDir);
|
|
107
|
+
console.log(chalk_1.default.bold('\nPackage Cache Information\n'));
|
|
108
|
+
console.log(`${chalk_1.default.bold('Cache Directory:')} ${chalk_1.default.cyan(cacheDir)}`);
|
|
109
|
+
console.log(`${chalk_1.default.bold('Cached Packages:')} ${chalk_1.default.cyan(packages.length.toString())}`);
|
|
110
|
+
if (await fs.pathExists(cacheDir)) {
|
|
111
|
+
const stats = await getCacheStats(cacheDir);
|
|
112
|
+
console.log(`${chalk_1.default.bold('Cache Size:')} ${chalk_1.default.cyan(formatBytes(stats.totalSize))}`);
|
|
113
|
+
console.log(`${chalk_1.default.bold('Total Files:')} ${chalk_1.default.cyan(stats.fileCount.toString())}`);
|
|
114
|
+
}
|
|
115
|
+
console.log();
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
console.error(chalk_1.default.red(`Failed to get cache info: ${error}`));
|
|
119
|
+
process.exit(1);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
cacheCommand.addCommand(listCommand);
|
|
123
|
+
cacheCommand.addCommand(clearCommand);
|
|
124
|
+
cacheCommand.addCommand(infoCommand);
|
|
125
|
+
return cacheCommand;
|
|
126
|
+
}
|
|
127
|
+
// Helper functions
|
|
128
|
+
function getCacheDirectory() {
|
|
129
|
+
const homeDir = os.homedir();
|
|
130
|
+
return path.join(homeDir, '.prompd', 'cache', 'packages');
|
|
131
|
+
}
|
|
132
|
+
async function listCachedPackages(cacheDir) {
|
|
133
|
+
if (!await fs.pathExists(cacheDir)) {
|
|
134
|
+
return [];
|
|
135
|
+
}
|
|
136
|
+
const packages = [];
|
|
137
|
+
try {
|
|
138
|
+
const entries = await fs.readdir(cacheDir, { withFileTypes: true });
|
|
139
|
+
for (const entry of entries) {
|
|
140
|
+
if (entry.isDirectory()) {
|
|
141
|
+
const packagePath = path.join(cacheDir, entry.name);
|
|
142
|
+
const manifestPath = path.join(packagePath, 'prompd.json');
|
|
143
|
+
if (await fs.pathExists(manifestPath)) {
|
|
144
|
+
try {
|
|
145
|
+
const manifest = await fs.readJson(manifestPath);
|
|
146
|
+
packages.push({
|
|
147
|
+
name: manifest.name || 'unknown',
|
|
148
|
+
version: manifest.version || 'unknown',
|
|
149
|
+
description: manifest.description,
|
|
150
|
+
path: packagePath
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
// Skip invalid manifest files
|
|
155
|
+
console.warn(chalk_1.default.yellow(`Warning: Invalid manifest in ${entry.name}`));
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
throw new Error(`Failed to read cache directory: ${error}`);
|
|
163
|
+
}
|
|
164
|
+
return packages;
|
|
165
|
+
}
|
|
166
|
+
async function getCacheStats(cacheDir) {
|
|
167
|
+
let totalSize = 0;
|
|
168
|
+
let fileCount = 0;
|
|
169
|
+
async function calculateSize(dir) {
|
|
170
|
+
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
171
|
+
for (const entry of entries) {
|
|
172
|
+
const fullPath = path.join(dir, entry.name);
|
|
173
|
+
if (entry.isDirectory()) {
|
|
174
|
+
await calculateSize(fullPath);
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
const stats = await fs.stat(fullPath);
|
|
178
|
+
totalSize += stats.size;
|
|
179
|
+
fileCount++;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
try {
|
|
184
|
+
await calculateSize(cacheDir);
|
|
185
|
+
}
|
|
186
|
+
catch (error) {
|
|
187
|
+
// Ignore errors, return what we have
|
|
188
|
+
}
|
|
189
|
+
return { totalSize, fileCount };
|
|
190
|
+
}
|
|
191
|
+
function formatBytes(bytes) {
|
|
192
|
+
if (bytes === 0)
|
|
193
|
+
return '0 Bytes';
|
|
194
|
+
const k = 1024;
|
|
195
|
+
const sizes = ['Bytes', 'KB', 'MB', 'GB'];
|
|
196
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
197
|
+
return Math.round((bytes / Math.pow(k, i)) * 100) / 100 + ' ' + sizes[i];
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/commands/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compile Command
|
|
3
|
+
*
|
|
4
|
+
* Compiles a .prmd file or package reference using the 6-stage compilation pipeline.
|
|
5
|
+
* Supports multiple output formats: markdown, OpenAI JSON, Anthropic JSON.
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
export declare function createCompileCommand(): Command;
|
|
9
|
+
//# sourceMappingURL=compile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/commands/compile.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,oBAAoB,IAAI,OAAO,CA4E9C"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Compile Command
|
|
4
|
+
*
|
|
5
|
+
* Compiles a .prmd file or package reference using the 6-stage compilation pipeline.
|
|
6
|
+
* Supports multiple output formats: markdown, OpenAI JSON, Anthropic JSON.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.createCompileCommand = createCompileCommand;
|
|
10
|
+
const commander_1 = require("commander");
|
|
11
|
+
const fs_1 = require("fs");
|
|
12
|
+
const path_1 = require("path");
|
|
13
|
+
const compiler_1 = require("../lib/compiler");
|
|
14
|
+
function createCompileCommand() {
|
|
15
|
+
const cmd = new commander_1.Command('compile');
|
|
16
|
+
cmd
|
|
17
|
+
.description('Compile a .prmd file or package reference with full template processing')
|
|
18
|
+
.argument('<source>', '.prmd file path or package reference (@namespace/package@version)')
|
|
19
|
+
.option('--to <format>', 'Output format: markdown | provider-json:openai | provider-json:anthropic', 'markdown')
|
|
20
|
+
.option('--to-markdown', 'Shorthand for --to markdown')
|
|
21
|
+
.option('--to-provider-json <provider>', 'Shorthand for --to provider-json:<provider>')
|
|
22
|
+
.option('-p, --param <key=value>', 'Parameter in format key=value', collectParams, {})
|
|
23
|
+
.option('-f, --params-file <file>', 'JSON parameter file')
|
|
24
|
+
.option('-o, --output <file>', 'Output file path')
|
|
25
|
+
.option('-v, --verbose', 'Verbose output with compilation details', false)
|
|
26
|
+
.action(async (source, options) => {
|
|
27
|
+
try {
|
|
28
|
+
// Collect parameters from different sources
|
|
29
|
+
let parameters = {};
|
|
30
|
+
// Load from parameter file if provided
|
|
31
|
+
if (options.paramsFile) {
|
|
32
|
+
try {
|
|
33
|
+
const fileContent = (0, fs_1.readFileSync)((0, path_1.resolve)(options.paramsFile), 'utf8');
|
|
34
|
+
const fileParams = JSON.parse(fileContent);
|
|
35
|
+
parameters = { ...parameters, ...fileParams };
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
console.error(`Error loading parameter file: ${error}`);
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// Merge command line parameters (CLI takes precedence)
|
|
43
|
+
parameters = { ...parameters, ...options.param };
|
|
44
|
+
// Determine output format
|
|
45
|
+
let outputFormat = options.to;
|
|
46
|
+
if (options.toMarkdown) {
|
|
47
|
+
outputFormat = 'markdown';
|
|
48
|
+
}
|
|
49
|
+
else if (options.toProviderJson) {
|
|
50
|
+
outputFormat = `provider-json:${options.toProviderJson}`;
|
|
51
|
+
}
|
|
52
|
+
// Create compiler instance
|
|
53
|
+
const compiler = new compiler_1.PrompdCompiler();
|
|
54
|
+
if (options.verbose) {
|
|
55
|
+
console.log(`Compiling: ${source}`);
|
|
56
|
+
console.log(`Output format: ${outputFormat}`);
|
|
57
|
+
console.log(`Parameters: ${Object.keys(parameters).length} parameter(s)`);
|
|
58
|
+
console.log('');
|
|
59
|
+
}
|
|
60
|
+
// Compile with the 6-stage pipeline
|
|
61
|
+
const result = await compiler.compile(source, {
|
|
62
|
+
outputFormat,
|
|
63
|
+
parameters,
|
|
64
|
+
outputFile: options.output,
|
|
65
|
+
verbose: options.verbose
|
|
66
|
+
});
|
|
67
|
+
// Output result (if not written to file)
|
|
68
|
+
if (!options.output) {
|
|
69
|
+
console.log('Compiled Content:');
|
|
70
|
+
console.log('-'.repeat(70));
|
|
71
|
+
console.log(result);
|
|
72
|
+
console.log('-'.repeat(70));
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
console.log(`✓ Compiled content written to ${options.output}`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
console.error(`Compilation error: ${error instanceof Error ? error.message : String(error)}`);
|
|
80
|
+
process.exit(1);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
return cmd;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Collect parameters from CLI arguments.
|
|
87
|
+
*/
|
|
88
|
+
function collectParams(value, previous) {
|
|
89
|
+
const [key, val] = value.split('=', 2);
|
|
90
|
+
if (!val) {
|
|
91
|
+
throw new Error(`Invalid parameter format: ${value}. Use key=value format.`);
|
|
92
|
+
}
|
|
93
|
+
// Try to parse as JSON for complex values
|
|
94
|
+
let parsedValue = val;
|
|
95
|
+
try {
|
|
96
|
+
parsedValue = JSON.parse(val);
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
// Not JSON, use as string
|
|
100
|
+
parsedValue = val;
|
|
101
|
+
}
|
|
102
|
+
return { ...previous, [key]: parsedValue };
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=compile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/commands/compile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAmB7C"}
|