proagents 1.6.16 → 1.6.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.local.json +169 -0
- package/COMMANDS.md +595 -0
- package/README.md +22 -64
- package/bin/proagents.js +0 -2
- package/lib/commands/init.js +4 -174
- package/package.json +2 -7
- package/.proagents/ai-models/README.md +0 -141
- package/.proagents/ai-models/cost-management.md +0 -362
- package/.proagents/ai-models/fallbacks.md +0 -342
- package/.proagents/ai-models/model-config.md +0 -318
- package/.proagents/ai-models/task-routing.md +0 -503
- package/.proagents/ai-training/README.md +0 -155
- package/.proagents/ai-training/continuous-learning.md +0 -413
- package/.proagents/ai-training/domain-knowledge.md +0 -378
- package/.proagents/ai-training/pattern-learning.md +0 -455
- package/.proagents/ai-training/training-data.md +0 -337
- package/.proagents/ai-training/user-preferences.md +0 -346
- package/.proagents/approval-workflows/README.md +0 -146
- package/.proagents/approval-workflows/approval-config.md +0 -332
- package/.proagents/approval-workflows/approval-stages.md +0 -503
- package/.proagents/approval-workflows/emergency-bypass.md +0 -351
- package/.proagents/approval-workflows/examples.md +0 -859
- package/.proagents/approval-workflows/notifications.md +0 -320
- package/.proagents/compliance/README.md +0 -206
- package/.proagents/compliance/access-control.md +0 -310
- package/.proagents/compliance/audit-logging.md +0 -444
- package/.proagents/compliance/compliance-frameworks.md +0 -429
- package/.proagents/compliance/reports.md +0 -491
- package/.proagents/compliance/retention-policies.md +0 -454
- package/.proagents/config-versioning/README.md +0 -120
- package/.proagents/config-versioning/changelog.md +0 -300
- package/.proagents/config-versioning/rollback.md +0 -283
- package/.proagents/config-versioning/versioning.md +0 -330
- package/.proagents/contract-testing/README.md +0 -223
- package/.proagents/contract-testing/contract-testing.md +0 -614
- package/.proagents/contract-testing/pact-integration.md +0 -507
- package/.proagents/contract-testing/schema-validation.md +0 -565
- package/.proagents/dependency-management/README.md +0 -140
- package/.proagents/dependency-management/automation.md +0 -363
- package/.proagents/dependency-management/compatibility.md +0 -319
- package/.proagents/dependency-management/security-scanning.md +0 -413
- package/.proagents/dependency-management/update-policies.md +0 -374
- package/.proagents/disaster-recovery/README.md +0 -247
- package/.proagents/disaster-recovery/automation.md +0 -366
- package/.proagents/disaster-recovery/backup-recovery.md +0 -571
- package/.proagents/disaster-recovery/incident-response.md +0 -565
- package/.proagents/disaster-recovery/rollback-procedures.md +0 -499
- package/.proagents/disaster-recovery/runbooks.md +0 -603
- package/.proagents/disaster-recovery/scenarios.md +0 -892
- package/.proagents/disaster-recovery/testing.md +0 -438
- package/.proagents/environments/README.md +0 -244
- package/.proagents/environments/configuration.md +0 -437
- package/.proagents/environments/promotion.md +0 -434
- package/.proagents/environments/setup.md +0 -420
- package/.proagents/examples/README.md +0 -55
- package/.proagents/examples/backend-nodejs/README.md +0 -188
- package/.proagents/examples/backend-nodejs/complete-conversation.md +0 -601
- package/.proagents/examples/backend-nodejs/proagents.config.yaml +0 -415
- package/.proagents/examples/backend-nodejs/workflow-example.md +0 -909
- package/.proagents/examples/fullstack-nextjs/README.md +0 -155
- package/.proagents/examples/fullstack-nextjs/complete-conversation.md +0 -604
- package/.proagents/examples/fullstack-nextjs/proagents.config.yaml +0 -287
- package/.proagents/examples/fullstack-nextjs/workflow-example.md +0 -553
- package/.proagents/examples/mobile-react-native/README.md +0 -171
- package/.proagents/examples/mobile-react-native/complete-conversation.md +0 -825
- package/.proagents/examples/mobile-react-native/proagents.config.yaml +0 -330
- package/.proagents/examples/mobile-react-native/workflow-example.md +0 -723
- package/.proagents/examples/web-frontend-react/README.md +0 -125
- package/.proagents/examples/web-frontend-react/complete-conversation.md +0 -556
- package/.proagents/examples/web-frontend-react/proagents.config.yaml +0 -183
- package/.proagents/examples/web-frontend-react/workflow-example.md +0 -603
- package/.proagents/existing-projects/README.md +0 -65
- package/.proagents/existing-projects/challenges.md +0 -861
- package/.proagents/existing-projects/coexistence-mode.md +0 -483
- package/.proagents/existing-projects/compatibility-assessment.md +0 -541
- package/.proagents/existing-projects/gradual-adoption.md +0 -515
- package/.proagents/existing-projects/migration-strategies.md +0 -788
- package/.proagents/existing-projects/pattern-reconciliation.md +0 -489
- package/.proagents/existing-projects/team-onboarding.md +0 -617
- package/.proagents/existing-projects/technical-debt-handling.md +0 -644
- package/.proagents/feature-flags/README.md +0 -263
- package/.proagents/feature-flags/ab-testing.md +0 -413
- package/.proagents/feature-flags/configuration.md +0 -420
- package/.proagents/feature-flags/kill-switches.md +0 -444
- package/.proagents/feature-flags/rollout-strategies.md +0 -392
- package/.proagents/history.log +0 -12
- package/.proagents/i18n/README.md +0 -133
- package/.proagents/i18n/extraction.md +0 -433
- package/.proagents/i18n/tms-integration.md +0 -332
- package/.proagents/i18n/translation-workflow.md +0 -413
- package/.proagents/i18n/validation.md +0 -355
- package/.proagents/logging/README.md +0 -276
- package/.proagents/logging/aggregation.md +0 -475
- package/.proagents/logging/log-levels.md +0 -376
- package/.proagents/logging/sensitive-data.md +0 -423
- package/.proagents/logging/structured-logging.md +0 -406
- package/.proagents/metrics/README.md +0 -69
- package/.proagents/metrics/code-quality-kpis.md +0 -461
- package/.proagents/metrics/deployment-metrics.md +0 -517
- package/.proagents/metrics/developer-productivity.md +0 -368
- package/.proagents/metrics/learning-effectiveness.md +0 -478
- package/.proagents/migrations/README.md +0 -77
- package/.proagents/migrations/from-claude-projects.md +0 -313
- package/.proagents/migrations/from-cursor-rules.md +0 -345
- package/.proagents/migrations/from-custom-workflows.md +0 -410
- package/.proagents/monitoring/README.md +0 -308
- package/.proagents/monitoring/alerting.md +0 -449
- package/.proagents/monitoring/dashboards.md +0 -454
- package/.proagents/monitoring/health-checks.md +0 -436
- package/.proagents/monitoring/metrics.md +0 -434
- package/.proagents/multi-project/README.md +0 -170
- package/.proagents/multi-project/coordinated-deploy.md +0 -510
- package/.proagents/multi-project/cross-project-deps.md +0 -395
- package/.proagents/multi-project/unified-changelog.md +0 -477
- package/.proagents/multi-project/walkthroughs/monorepo-setup.md +0 -787
- package/.proagents/multi-project/workspace-config.md +0 -408
- package/.proagents/notifications/README.md +0 -151
- package/.proagents/notifications/channels.md +0 -457
- package/.proagents/notifications/preferences.md +0 -415
- package/.proagents/notifications/routing.md +0 -449
- package/.proagents/notifications/scheduling.md +0 -425
- package/.proagents/notifications/templates.md +0 -446
- package/.proagents/offline-mode/README.md +0 -145
- package/.proagents/offline-mode/caching.md +0 -344
- package/.proagents/offline-mode/offline-operations.md +0 -312
- package/.proagents/offline-mode/queue-specifications.md +0 -679
- package/.proagents/offline-mode/sync.md +0 -475
- package/.proagents/parallel-features/README.md +0 -85
- package/.proagents/parallel-features/conflict-detection.md +0 -226
- package/.proagents/parallel-features/dependency-management.md +0 -392
- package/.proagents/parallel-features/merge-coordination.md +0 -506
- package/.proagents/parallel-features/tracking-system.md +0 -416
- package/.proagents/performance/README.md +0 -59
- package/.proagents/performance/bundle-analysis.md +0 -375
- package/.proagents/performance/load-testing.md +0 -563
- package/.proagents/performance/runtime-metrics.md +0 -489
- package/.proagents/performance/web-vitals.md +0 -425
- package/.proagents/plugins/README.md +0 -139
- package/.proagents/plugins/creating-plugins.md +0 -504
- package/.proagents/plugins/plugin-api.md +0 -467
- package/.proagents/plugins/plugin-registry.md +0 -276
- package/.proagents/reporting/README.md +0 -158
- package/.proagents/reporting/dashboards.md +0 -366
- package/.proagents/reporting/exports.md +0 -524
- package/.proagents/reporting/quality-metrics.md +0 -385
- package/.proagents/reporting/templates/README.md +0 -56
- package/.proagents/reporting/templates/dashboard-config.json +0 -187
- package/.proagents/reporting/templates/metrics-queries.md +0 -427
- package/.proagents/reporting/templates/react-dashboard.tsx +0 -544
- package/.proagents/reporting/templates/widgets.md +0 -451
- package/.proagents/reporting/velocity-metrics.md +0 -340
- package/.proagents/reverse-engineering/README.md +0 -151
- package/.proagents/reverse-engineering/architecture-extraction.md +0 -325
- package/.proagents/reverse-engineering/code-analysis.md +0 -377
- package/.proagents/reverse-engineering/dependency-mapping.md +0 -567
- package/.proagents/reverse-engineering/diagram-generation.md +0 -586
- package/.proagents/reverse-engineering/documentation-generation.md +0 -468
- package/.proagents/reverse-engineering/pattern-detection.md +0 -569
- package/.proagents/reverse-engineering/quality-assessment.md +0 -733
- package/.proagents/secrets/README.md +0 -278
- package/.proagents/secrets/access-control.md +0 -443
- package/.proagents/secrets/rotation.md +0 -403
- package/.proagents/secrets/scanning.md +0 -487
- package/.proagents/secrets/storage.md +0 -394
- package/.proagents/webhooks/README.md +0 -126
- package/.proagents/webhooks/endpoints.md +0 -298
- package/.proagents/webhooks/events.md +0 -316
- package/.proagents/webhooks/payloads.md +0 -325
- package/.proagents/webhooks/reliability.md +0 -363
- package/.proagents/webhooks/security.md +0 -380
|
@@ -1,467 +0,0 @@
|
|
|
1
|
-
# Plugin API Reference
|
|
2
|
-
|
|
3
|
-
Complete API documentation for ProAgents plugins.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Plugin Structure
|
|
8
|
-
|
|
9
|
-
```
|
|
10
|
-
my-plugin/
|
|
11
|
-
├── package.json # Plugin metadata
|
|
12
|
-
├── index.ts # Main entry point
|
|
13
|
-
├── src/
|
|
14
|
-
│ ├── hooks/ # Lifecycle hooks
|
|
15
|
-
│ ├── commands/ # Custom commands
|
|
16
|
-
│ ├── generators/ # Code generators
|
|
17
|
-
│ └── validators/ # Custom validators
|
|
18
|
-
└── README.md # Plugin documentation
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## Plugin Manifest (package.json)
|
|
24
|
-
|
|
25
|
-
```json
|
|
26
|
-
{
|
|
27
|
-
"name": "@myorg/proagents-plugin-example",
|
|
28
|
-
"version": "1.0.0",
|
|
29
|
-
"description": "Example ProAgents plugin",
|
|
30
|
-
"main": "dist/index.js",
|
|
31
|
-
"types": "dist/index.d.ts",
|
|
32
|
-
|
|
33
|
-
"proagents": {
|
|
34
|
-
"name": "example-plugin",
|
|
35
|
-
"version": "1.0.0",
|
|
36
|
-
"type": "integration",
|
|
37
|
-
"compatibility": ">=1.0.0",
|
|
38
|
-
|
|
39
|
-
"hooks": [
|
|
40
|
-
"onInit",
|
|
41
|
-
"onFeatureStart",
|
|
42
|
-
"onPhaseComplete"
|
|
43
|
-
],
|
|
44
|
-
|
|
45
|
-
"commands": [
|
|
46
|
-
{
|
|
47
|
-
"name": "example",
|
|
48
|
-
"description": "Example command"
|
|
49
|
-
}
|
|
50
|
-
],
|
|
51
|
-
|
|
52
|
-
"config": {
|
|
53
|
-
"apiKey": {
|
|
54
|
-
"type": "string",
|
|
55
|
-
"required": true,
|
|
56
|
-
"env": "EXAMPLE_API_KEY"
|
|
57
|
-
},
|
|
58
|
-
"enabled": {
|
|
59
|
-
"type": "boolean",
|
|
60
|
-
"default": true
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
},
|
|
64
|
-
|
|
65
|
-
"peerDependencies": {
|
|
66
|
-
"@proagents/core": ">=1.0.0"
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
---
|
|
72
|
-
|
|
73
|
-
## Plugin Entry Point
|
|
74
|
-
|
|
75
|
-
```typescript
|
|
76
|
-
// index.ts
|
|
77
|
-
import { Plugin, PluginContext, HookPayload } from '@proagents/core';
|
|
78
|
-
|
|
79
|
-
export interface ExamplePluginConfig {
|
|
80
|
-
apiKey: string;
|
|
81
|
-
enabled: boolean;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
export default class ExamplePlugin implements Plugin<ExamplePluginConfig> {
|
|
85
|
-
name = 'example-plugin';
|
|
86
|
-
version = '1.0.0';
|
|
87
|
-
|
|
88
|
-
private context: PluginContext;
|
|
89
|
-
private config: ExamplePluginConfig;
|
|
90
|
-
|
|
91
|
-
// ========================================================================
|
|
92
|
-
// Lifecycle
|
|
93
|
-
// ========================================================================
|
|
94
|
-
|
|
95
|
-
async initialize(context: PluginContext, config: ExamplePluginConfig) {
|
|
96
|
-
this.context = context;
|
|
97
|
-
this.config = config;
|
|
98
|
-
|
|
99
|
-
// Register hooks
|
|
100
|
-
context.hooks.on('onFeatureStart', this.onFeatureStart.bind(this));
|
|
101
|
-
context.hooks.on('onPhaseComplete', this.onPhaseComplete.bind(this));
|
|
102
|
-
|
|
103
|
-
// Register commands
|
|
104
|
-
context.commands.register({
|
|
105
|
-
name: 'example',
|
|
106
|
-
description: 'Example command',
|
|
107
|
-
handler: this.handleExampleCommand.bind(this),
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
this.context.logger.info('Example plugin initialized');
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
async destroy() {
|
|
114
|
-
// Cleanup resources
|
|
115
|
-
this.context.logger.info('Example plugin destroyed');
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
// ========================================================================
|
|
119
|
-
// Hooks
|
|
120
|
-
// ========================================================================
|
|
121
|
-
|
|
122
|
-
async onFeatureStart(payload: HookPayload<'onFeatureStart'>) {
|
|
123
|
-
const { feature, context } = payload;
|
|
124
|
-
|
|
125
|
-
this.context.logger.info(`Feature started: ${feature.name}`);
|
|
126
|
-
|
|
127
|
-
// Example: Create external ticket
|
|
128
|
-
if (this.config.enabled) {
|
|
129
|
-
await this.createExternalTicket(feature);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
async onPhaseComplete(payload: HookPayload<'onPhaseComplete'>) {
|
|
134
|
-
const { phase, feature, result } = payload;
|
|
135
|
-
|
|
136
|
-
this.context.logger.info(`Phase ${phase} completed for ${feature.name}`);
|
|
137
|
-
|
|
138
|
-
// Example: Update external ticket
|
|
139
|
-
if (this.config.enabled) {
|
|
140
|
-
await this.updateExternalTicket(feature, phase, result);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
// ========================================================================
|
|
145
|
-
// Commands
|
|
146
|
-
// ========================================================================
|
|
147
|
-
|
|
148
|
-
async handleExampleCommand(args: string[], options: Record<string, unknown>) {
|
|
149
|
-
this.context.logger.info('Example command executed', { args, options });
|
|
150
|
-
|
|
151
|
-
return {
|
|
152
|
-
success: true,
|
|
153
|
-
message: 'Example command completed',
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
// ========================================================================
|
|
158
|
-
// Private Methods
|
|
159
|
-
// ========================================================================
|
|
160
|
-
|
|
161
|
-
private async createExternalTicket(feature: Feature) {
|
|
162
|
-
// Implementation
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
private async updateExternalTicket(
|
|
166
|
-
feature: Feature,
|
|
167
|
-
phase: string,
|
|
168
|
-
result: PhaseResult
|
|
169
|
-
) {
|
|
170
|
-
// Implementation
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
---
|
|
176
|
-
|
|
177
|
-
## Plugin Context API
|
|
178
|
-
|
|
179
|
-
```typescript
|
|
180
|
-
interface PluginContext {
|
|
181
|
-
// Logging
|
|
182
|
-
logger: Logger;
|
|
183
|
-
|
|
184
|
-
// Configuration
|
|
185
|
-
config: ConfigManager;
|
|
186
|
-
|
|
187
|
-
// Project information
|
|
188
|
-
project: ProjectInfo;
|
|
189
|
-
|
|
190
|
-
// Hook registration
|
|
191
|
-
hooks: HookManager;
|
|
192
|
-
|
|
193
|
-
// Command registration
|
|
194
|
-
commands: CommandManager;
|
|
195
|
-
|
|
196
|
-
// File system access
|
|
197
|
-
fs: FileSystemAccess;
|
|
198
|
-
|
|
199
|
-
// HTTP client
|
|
200
|
-
http: HttpClient;
|
|
201
|
-
|
|
202
|
-
// Cache
|
|
203
|
-
cache: CacheManager;
|
|
204
|
-
|
|
205
|
-
// Events
|
|
206
|
-
events: EventEmitter;
|
|
207
|
-
|
|
208
|
-
// UI (for CLI interactions)
|
|
209
|
-
ui: UIManager;
|
|
210
|
-
}
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
---
|
|
214
|
-
|
|
215
|
-
## Available Hooks
|
|
216
|
-
|
|
217
|
-
### Workflow Hooks
|
|
218
|
-
|
|
219
|
-
| Hook | Payload | Description |
|
|
220
|
-
|------|---------|-------------|
|
|
221
|
-
| `onInit` | `{ project }` | Plugin initialized |
|
|
222
|
-
| `onFeatureStart` | `{ feature, context }` | Feature started |
|
|
223
|
-
| `onFeatureComplete` | `{ feature, result }` | Feature completed |
|
|
224
|
-
| `onPhaseStart` | `{ phase, feature }` | Phase started |
|
|
225
|
-
| `onPhaseComplete` | `{ phase, feature, result }` | Phase completed |
|
|
226
|
-
| `onError` | `{ error, context }` | Error occurred |
|
|
227
|
-
|
|
228
|
-
### Git Hooks
|
|
229
|
-
|
|
230
|
-
| Hook | Payload | Description |
|
|
231
|
-
|------|---------|-------------|
|
|
232
|
-
| `onBranchCreate` | `{ branch, feature }` | Branch created |
|
|
233
|
-
| `onCommit` | `{ commit, files }` | Commit made |
|
|
234
|
-
| `onPush` | `{ branch, commits }` | Push completed |
|
|
235
|
-
| `onPRCreate` | `{ pr, feature }` | PR created |
|
|
236
|
-
|
|
237
|
-
### Code Hooks
|
|
238
|
-
|
|
239
|
-
| Hook | Payload | Description |
|
|
240
|
-
|------|---------|-------------|
|
|
241
|
-
| `onFileCreate` | `{ file, content }` | File created |
|
|
242
|
-
| `onFileModify` | `{ file, changes }` | File modified |
|
|
243
|
-
| `onTestRun` | `{ tests, results }` | Tests executed |
|
|
244
|
-
| `onBuild` | `{ result }` | Build completed |
|
|
245
|
-
|
|
246
|
-
---
|
|
247
|
-
|
|
248
|
-
## Hook Registration
|
|
249
|
-
|
|
250
|
-
```typescript
|
|
251
|
-
// Register single hook
|
|
252
|
-
context.hooks.on('onFeatureStart', async (payload) => {
|
|
253
|
-
// Handle event
|
|
254
|
-
});
|
|
255
|
-
|
|
256
|
-
// Register multiple hooks
|
|
257
|
-
context.hooks.register({
|
|
258
|
-
onFeatureStart: async (payload) => { /* ... */ },
|
|
259
|
-
onPhaseComplete: async (payload) => { /* ... */ },
|
|
260
|
-
});
|
|
261
|
-
|
|
262
|
-
// Hook with priority
|
|
263
|
-
context.hooks.on('onFeatureStart', handler, { priority: 10 });
|
|
264
|
-
|
|
265
|
-
// One-time hook
|
|
266
|
-
context.hooks.once('onInit', handler);
|
|
267
|
-
|
|
268
|
-
// Remove hook
|
|
269
|
-
const unsubscribe = context.hooks.on('onFeatureStart', handler);
|
|
270
|
-
unsubscribe(); // Remove the hook
|
|
271
|
-
```
|
|
272
|
-
|
|
273
|
-
---
|
|
274
|
-
|
|
275
|
-
## Command Registration
|
|
276
|
-
|
|
277
|
-
```typescript
|
|
278
|
-
// Simple command
|
|
279
|
-
context.commands.register({
|
|
280
|
-
name: 'my-command',
|
|
281
|
-
description: 'My custom command',
|
|
282
|
-
handler: async (args, options) => {
|
|
283
|
-
return { success: true };
|
|
284
|
-
},
|
|
285
|
-
});
|
|
286
|
-
|
|
287
|
-
// Command with options
|
|
288
|
-
context.commands.register({
|
|
289
|
-
name: 'my-command',
|
|
290
|
-
description: 'My custom command',
|
|
291
|
-
options: [
|
|
292
|
-
{
|
|
293
|
-
name: 'verbose',
|
|
294
|
-
alias: 'v',
|
|
295
|
-
type: 'boolean',
|
|
296
|
-
description: 'Enable verbose output',
|
|
297
|
-
},
|
|
298
|
-
{
|
|
299
|
-
name: 'output',
|
|
300
|
-
alias: 'o',
|
|
301
|
-
type: 'string',
|
|
302
|
-
description: 'Output file path',
|
|
303
|
-
},
|
|
304
|
-
],
|
|
305
|
-
handler: async (args, options) => {
|
|
306
|
-
if (options.verbose) {
|
|
307
|
-
// Verbose output
|
|
308
|
-
}
|
|
309
|
-
return { success: true };
|
|
310
|
-
},
|
|
311
|
-
});
|
|
312
|
-
|
|
313
|
-
// Command
|
|
314
|
-
context.commands.registerSlash({
|
|
315
|
-
name: '/my-command',
|
|
316
|
-
description: 'My command',
|
|
317
|
-
handler: async (input) => {
|
|
318
|
-
return { response: 'Command executed' };
|
|
319
|
-
},
|
|
320
|
-
});
|
|
321
|
-
```
|
|
322
|
-
|
|
323
|
-
---
|
|
324
|
-
|
|
325
|
-
## File System Access
|
|
326
|
-
|
|
327
|
-
```typescript
|
|
328
|
-
// Read file
|
|
329
|
-
const content = await context.fs.read('src/index.ts');
|
|
330
|
-
|
|
331
|
-
// Write file
|
|
332
|
-
await context.fs.write('output.json', JSON.stringify(data));
|
|
333
|
-
|
|
334
|
-
// Check existence
|
|
335
|
-
const exists = await context.fs.exists('package.json');
|
|
336
|
-
|
|
337
|
-
// List files
|
|
338
|
-
const files = await context.fs.glob('src/**/*.ts');
|
|
339
|
-
|
|
340
|
-
// Watch files
|
|
341
|
-
context.fs.watch('src/**/*.ts', (event, path) => {
|
|
342
|
-
// Handle file change
|
|
343
|
-
});
|
|
344
|
-
```
|
|
345
|
-
|
|
346
|
-
---
|
|
347
|
-
|
|
348
|
-
## HTTP Client
|
|
349
|
-
|
|
350
|
-
```typescript
|
|
351
|
-
// GET request
|
|
352
|
-
const response = await context.http.get('https://api.example.com/data');
|
|
353
|
-
|
|
354
|
-
// POST request
|
|
355
|
-
const result = await context.http.post('https://api.example.com/create', {
|
|
356
|
-
body: { name: 'Test' },
|
|
357
|
-
headers: { 'Authorization': `Bearer ${token}` },
|
|
358
|
-
});
|
|
359
|
-
|
|
360
|
-
// With retry
|
|
361
|
-
const data = await context.http.get('https://api.example.com/data', {
|
|
362
|
-
retry: 3,
|
|
363
|
-
retryDelay: 1000,
|
|
364
|
-
});
|
|
365
|
-
```
|
|
366
|
-
|
|
367
|
-
---
|
|
368
|
-
|
|
369
|
-
## Cache Manager
|
|
370
|
-
|
|
371
|
-
```typescript
|
|
372
|
-
// Set cache
|
|
373
|
-
await context.cache.set('key', value, { ttl: 3600 });
|
|
374
|
-
|
|
375
|
-
// Get cache
|
|
376
|
-
const value = await context.cache.get('key');
|
|
377
|
-
|
|
378
|
-
// Delete cache
|
|
379
|
-
await context.cache.delete('key');
|
|
380
|
-
|
|
381
|
-
// Clear all
|
|
382
|
-
await context.cache.clear();
|
|
383
|
-
```
|
|
384
|
-
|
|
385
|
-
---
|
|
386
|
-
|
|
387
|
-
## UI Manager
|
|
388
|
-
|
|
389
|
-
```typescript
|
|
390
|
-
// Show message
|
|
391
|
-
context.ui.info('Processing...');
|
|
392
|
-
context.ui.success('Completed!');
|
|
393
|
-
context.ui.warn('Warning: ...');
|
|
394
|
-
context.ui.error('Error: ...');
|
|
395
|
-
|
|
396
|
-
// Prompt user
|
|
397
|
-
const answer = await context.ui.prompt('Enter value:');
|
|
398
|
-
|
|
399
|
-
// Confirm
|
|
400
|
-
const confirmed = await context.ui.confirm('Continue?');
|
|
401
|
-
|
|
402
|
-
// Select
|
|
403
|
-
const choice = await context.ui.select('Choose option:', [
|
|
404
|
-
{ label: 'Option 1', value: 'opt1' },
|
|
405
|
-
{ label: 'Option 2', value: 'opt2' },
|
|
406
|
-
]);
|
|
407
|
-
|
|
408
|
-
// Progress
|
|
409
|
-
const progress = context.ui.progress('Processing', 100);
|
|
410
|
-
progress.update(50);
|
|
411
|
-
progress.complete();
|
|
412
|
-
```
|
|
413
|
-
|
|
414
|
-
---
|
|
415
|
-
|
|
416
|
-
## Error Handling
|
|
417
|
-
|
|
418
|
-
```typescript
|
|
419
|
-
import { PluginError } from '@proagents/core';
|
|
420
|
-
|
|
421
|
-
// Throw plugin error
|
|
422
|
-
throw new PluginError('Something went wrong', {
|
|
423
|
-
code: 'PLUGIN_ERROR',
|
|
424
|
-
recoverable: true,
|
|
425
|
-
details: { /* ... */ },
|
|
426
|
-
});
|
|
427
|
-
|
|
428
|
-
// Handle errors in hooks
|
|
429
|
-
context.hooks.on('onError', async ({ error, context }) => {
|
|
430
|
-
if (error instanceof PluginError) {
|
|
431
|
-
// Handle plugin error
|
|
432
|
-
}
|
|
433
|
-
});
|
|
434
|
-
```
|
|
435
|
-
|
|
436
|
-
---
|
|
437
|
-
|
|
438
|
-
## Testing Plugins
|
|
439
|
-
|
|
440
|
-
```typescript
|
|
441
|
-
import { createTestContext } from '@proagents/testing';
|
|
442
|
-
import MyPlugin from './index';
|
|
443
|
-
|
|
444
|
-
describe('MyPlugin', () => {
|
|
445
|
-
let plugin: MyPlugin;
|
|
446
|
-
let context: TestContext;
|
|
447
|
-
|
|
448
|
-
beforeEach(async () => {
|
|
449
|
-
context = createTestContext();
|
|
450
|
-
plugin = new MyPlugin();
|
|
451
|
-
await plugin.initialize(context, { apiKey: 'test' });
|
|
452
|
-
});
|
|
453
|
-
|
|
454
|
-
it('should handle feature start', async () => {
|
|
455
|
-
const payload = {
|
|
456
|
-
feature: { name: 'test-feature' },
|
|
457
|
-
context: {},
|
|
458
|
-
};
|
|
459
|
-
|
|
460
|
-
await context.hooks.emit('onFeatureStart', payload);
|
|
461
|
-
|
|
462
|
-
expect(context.logger.info).toHaveBeenCalledWith(
|
|
463
|
-
expect.stringContaining('Feature started')
|
|
464
|
-
);
|
|
465
|
-
});
|
|
466
|
-
});
|
|
467
|
-
```
|