@pinepaper.studio/mcp-server 1.4.3 → 1.5.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 +114 -0
- package/dist/__tests__/fixtures/mock-generators.d.ts +147 -0
- package/dist/__tests__/fixtures/mock-generators.d.ts.map +1 -1
- package/dist/__tests__/fixtures/mock-generators.js +85 -0
- package/dist/__tests__/fixtures/mock-generators.js.map +1 -1
- package/dist/agent/export-manager.d.ts +77 -0
- package/dist/agent/export-manager.d.ts.map +1 -0
- package/dist/agent/export-manager.js +455 -0
- package/dist/agent/export-manager.js.map +1 -0
- package/dist/agent/index.d.ts +9 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +12 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/session-manager.d.ts +109 -0
- package/dist/agent/session-manager.d.ts.map +1 -0
- package/dist/agent/session-manager.js +311 -0
- package/dist/agent/session-manager.js.map +1 -0
- package/dist/agent/types.d.ts +385 -0
- package/dist/agent/types.d.ts.map +1 -0
- package/dist/agent/types.js +141 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/browser/index.d.ts +1 -1
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/index.js +1 -1
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/puppeteer-controller.d.ts +89 -5
- package/dist/browser/puppeteer-controller.d.ts.map +1 -1
- package/dist/browser/puppeteer-controller.js +412 -11
- package/dist/browser/puppeteer-controller.js.map +1 -1
- package/dist/cli.js +3 -2
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2717 -147
- package/dist/index.js.map +1 -1
- package/dist/prompts/index.d.ts +39 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +254 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/tools/compact-descriptions.d.ts +9 -0
- package/dist/tools/compact-descriptions.d.ts.map +1 -0
- package/dist/tools/compact-descriptions.js +260 -0
- package/dist/tools/compact-descriptions.js.map +1 -0
- package/dist/tools/definitions.d.ts +12 -0
- package/dist/tools/definitions.d.ts.map +1 -1
- package/dist/tools/definitions.js +4844 -1559
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/handlers.d.ts.map +1 -1
- package/dist/tools/handlers.js +915 -17
- package/dist/tools/handlers.js.map +1 -1
- package/dist/tools/index.d.ts +2 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +1 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/types/code-generator.d.ts +197 -1
- package/dist/types/code-generator.d.ts.map +1 -1
- package/dist/types/code-generator.js +2338 -26
- package/dist/types/code-generator.js.map +1 -1
- package/dist/types/schemas.d.ts +5294 -1134
- package/dist/types/schemas.d.ts.map +1 -1
- package/dist/types/schemas.js +886 -4
- package/dist/types/schemas.js.map +1 -1
- package/manifest.json +70 -2
- package/package.json +1 -1
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PinePaper Agent Session Manager
|
|
3
|
+
*
|
|
4
|
+
* Manages job/session lifecycle for agent workflows.
|
|
5
|
+
* Provides batch code execution, item tracking, and job state management.
|
|
6
|
+
*/
|
|
7
|
+
// Simple unique ID generator (avoids uuid dependency)
|
|
8
|
+
function generateUniqueId() {
|
|
9
|
+
return Math.random().toString(36).substring(2, 10);
|
|
10
|
+
}
|
|
11
|
+
// =============================================================================
|
|
12
|
+
// SESSION MANAGER CLASS
|
|
13
|
+
// =============================================================================
|
|
14
|
+
/**
|
|
15
|
+
* Manages agent job/session lifecycle.
|
|
16
|
+
*
|
|
17
|
+
* Features:
|
|
18
|
+
* - Job start/end with automatic tracking
|
|
19
|
+
* - Code queuing for batch execution
|
|
20
|
+
* - Item and relation tracking per job
|
|
21
|
+
* - Screenshot policy management
|
|
22
|
+
*/
|
|
23
|
+
export class AgentSessionManager {
|
|
24
|
+
currentJob = null;
|
|
25
|
+
jobHistory = [];
|
|
26
|
+
/**
|
|
27
|
+
* Generate a unique job ID
|
|
28
|
+
*/
|
|
29
|
+
generateJobId() {
|
|
30
|
+
return `job_${Date.now()}_${generateUniqueId()}`;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Check if a job is currently active
|
|
34
|
+
*/
|
|
35
|
+
hasActiveJob() {
|
|
36
|
+
return this.currentJob !== null;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Get the current job context
|
|
40
|
+
*/
|
|
41
|
+
getCurrentJob() {
|
|
42
|
+
return this.currentJob;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Start a new agent job
|
|
46
|
+
*/
|
|
47
|
+
startJob(options = {}) {
|
|
48
|
+
// End any existing job first
|
|
49
|
+
if (this.currentJob) {
|
|
50
|
+
console.warn('[AgentSession] Ending previous job before starting new one');
|
|
51
|
+
// Don't await - just clean up state
|
|
52
|
+
this.currentJob = null;
|
|
53
|
+
}
|
|
54
|
+
const jobId = this.generateJobId();
|
|
55
|
+
const now = Date.now();
|
|
56
|
+
this.currentJob = {
|
|
57
|
+
jobId,
|
|
58
|
+
name: options.name,
|
|
59
|
+
startTime: now,
|
|
60
|
+
itemsCreated: [],
|
|
61
|
+
relationsCreated: [],
|
|
62
|
+
codeQueue: [],
|
|
63
|
+
screenshotPolicy: options.screenshotPolicy || 'on_complete',
|
|
64
|
+
canvasPreset: options.canvasPreset,
|
|
65
|
+
agentMode: true,
|
|
66
|
+
};
|
|
67
|
+
console.error(`[AgentSession] Started job: ${jobId}${options.name ? ` (${options.name})` : ''}`);
|
|
68
|
+
return this.currentJob;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* End the current job and return results
|
|
72
|
+
*/
|
|
73
|
+
endJob() {
|
|
74
|
+
if (!this.currentJob) {
|
|
75
|
+
console.warn('[AgentSession] No active job to end');
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
const job = this.currentJob;
|
|
79
|
+
const duration = Date.now() - job.startTime;
|
|
80
|
+
const result = {
|
|
81
|
+
jobId: job.jobId,
|
|
82
|
+
name: job.name,
|
|
83
|
+
duration,
|
|
84
|
+
itemsCreated: [...job.itemsCreated],
|
|
85
|
+
relationsCreated: [...job.relationsCreated],
|
|
86
|
+
};
|
|
87
|
+
// Store in history
|
|
88
|
+
this.jobHistory.push(result);
|
|
89
|
+
// Clear current job
|
|
90
|
+
this.currentJob = null;
|
|
91
|
+
console.error(`[AgentSession] Ended job: ${job.jobId} (${duration}ms, ${job.itemsCreated.length} items)`);
|
|
92
|
+
return result;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Queue code for batch execution
|
|
96
|
+
*/
|
|
97
|
+
queueCode(code) {
|
|
98
|
+
if (!this.currentJob) {
|
|
99
|
+
console.warn('[AgentSession] No active job - executing immediately');
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
this.currentJob.codeQueue.push(code);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Get queued code and clear the queue
|
|
106
|
+
*/
|
|
107
|
+
flushCodeQueue() {
|
|
108
|
+
if (!this.currentJob) {
|
|
109
|
+
return [];
|
|
110
|
+
}
|
|
111
|
+
const queue = [...this.currentJob.codeQueue];
|
|
112
|
+
this.currentJob.codeQueue = [];
|
|
113
|
+
return queue;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Get combined code from queue as a single script
|
|
117
|
+
*/
|
|
118
|
+
getCombinedCode() {
|
|
119
|
+
if (!this.currentJob || this.currentJob.codeQueue.length === 0) {
|
|
120
|
+
return '';
|
|
121
|
+
}
|
|
122
|
+
const queue = this.currentJob.codeQueue;
|
|
123
|
+
// Wrap in IIFE with error handling and result collection
|
|
124
|
+
const combinedCode = `
|
|
125
|
+
(async function() {
|
|
126
|
+
const _results = [];
|
|
127
|
+
const _itemIds = [];
|
|
128
|
+
|
|
129
|
+
try {
|
|
130
|
+
${queue.map((code, i) => `
|
|
131
|
+
// Operation ${i + 1}
|
|
132
|
+
try {
|
|
133
|
+
const _result${i} = await (async () => {
|
|
134
|
+
${code}
|
|
135
|
+
})();
|
|
136
|
+
_results.push({ index: ${i}, success: true, result: _result${i} });
|
|
137
|
+
if (_result${i} && _result${i}.itemId) {
|
|
138
|
+
_itemIds.push(_result${i}.itemId);
|
|
139
|
+
}
|
|
140
|
+
} catch (e) {
|
|
141
|
+
_results.push({ index: ${i}, success: false, error: e.message });
|
|
142
|
+
throw e; // Re-throw for atomic mode
|
|
143
|
+
}
|
|
144
|
+
`).join('\n')}
|
|
145
|
+
|
|
146
|
+
return { success: true, itemIds: _itemIds, results: _results };
|
|
147
|
+
} catch (e) {
|
|
148
|
+
return { success: false, error: e.message, itemIds: _itemIds, results: _results };
|
|
149
|
+
}
|
|
150
|
+
})();
|
|
151
|
+
`.trim();
|
|
152
|
+
return combinedCode;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Check if there's queued code
|
|
156
|
+
*/
|
|
157
|
+
hasQueuedCode() {
|
|
158
|
+
return this.currentJob !== null && this.currentJob.codeQueue.length > 0;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Get queue size
|
|
162
|
+
*/
|
|
163
|
+
getQueueSize() {
|
|
164
|
+
return this.currentJob?.codeQueue.length ?? 0;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Register an item created during the job
|
|
168
|
+
*/
|
|
169
|
+
registerItem(itemId) {
|
|
170
|
+
if (this.currentJob && itemId) {
|
|
171
|
+
this.currentJob.itemsCreated.push(itemId);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Register a relation created during the job
|
|
176
|
+
*/
|
|
177
|
+
registerRelation(relationId) {
|
|
178
|
+
if (this.currentJob && relationId) {
|
|
179
|
+
this.currentJob.relationsCreated.push(relationId);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Get screenshot policy for current job
|
|
184
|
+
*/
|
|
185
|
+
getScreenshotPolicy() {
|
|
186
|
+
return this.currentJob?.screenshotPolicy ?? 'on_request';
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Check if screenshot should be taken based on policy and event
|
|
190
|
+
*/
|
|
191
|
+
shouldTakeScreenshot(event) {
|
|
192
|
+
const policy = this.getScreenshotPolicy();
|
|
193
|
+
switch (event) {
|
|
194
|
+
case 'operation':
|
|
195
|
+
return false; // Never screenshot per operation in agent mode
|
|
196
|
+
case 'error':
|
|
197
|
+
return policy === 'on_error' || policy === 'on_complete';
|
|
198
|
+
case 'complete':
|
|
199
|
+
return policy === 'on_complete';
|
|
200
|
+
default:
|
|
201
|
+
return false;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Generate code for canvas reset
|
|
206
|
+
*/
|
|
207
|
+
generateResetCode(options = {}) {
|
|
208
|
+
const parts = [];
|
|
209
|
+
// Clear all items
|
|
210
|
+
parts.push(`
|
|
211
|
+
// Clear canvas
|
|
212
|
+
if (app.clearCanvas) {
|
|
213
|
+
app.clearCanvas();
|
|
214
|
+
} else {
|
|
215
|
+
// Fallback: remove all items from text layer
|
|
216
|
+
if (app.textItemGroup) {
|
|
217
|
+
app.textItemGroup.removeChildren();
|
|
218
|
+
}
|
|
219
|
+
// Clear pattern group
|
|
220
|
+
if (app.patternGroup) {
|
|
221
|
+
app.patternGroup.removeChildren();
|
|
222
|
+
}
|
|
223
|
+
// Clear item registry
|
|
224
|
+
if (app.itemRegistry) {
|
|
225
|
+
app.itemRegistry.clear();
|
|
226
|
+
}
|
|
227
|
+
// Clear relation registry
|
|
228
|
+
if (app.relationRegistry) {
|
|
229
|
+
app.relationRegistry.clear();
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
`.trim());
|
|
233
|
+
// Set canvas size if preset specified
|
|
234
|
+
if (options.canvasPreset) {
|
|
235
|
+
parts.push(`
|
|
236
|
+
// Set canvas size to preset
|
|
237
|
+
app.setCanvasSize('${options.canvasPreset}');
|
|
238
|
+
`.trim());
|
|
239
|
+
}
|
|
240
|
+
// Set background color if specified
|
|
241
|
+
if (options.backgroundColor && !options.preserveBackground) {
|
|
242
|
+
parts.push(`
|
|
243
|
+
// Set background color
|
|
244
|
+
app.setBackgroundColor('${options.backgroundColor}');
|
|
245
|
+
`.trim());
|
|
246
|
+
}
|
|
247
|
+
// Save history state
|
|
248
|
+
parts.push(`
|
|
249
|
+
// Save state
|
|
250
|
+
if (app.historyManager) {
|
|
251
|
+
app.historyManager.saveState();
|
|
252
|
+
}
|
|
253
|
+
({ success: true, reset: true });
|
|
254
|
+
`.trim());
|
|
255
|
+
return parts.join('\n\n');
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Get job history
|
|
259
|
+
*/
|
|
260
|
+
getJobHistory() {
|
|
261
|
+
return [...this.jobHistory];
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Clear job history
|
|
265
|
+
*/
|
|
266
|
+
clearHistory() {
|
|
267
|
+
this.jobHistory = [];
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Get statistics about the current session
|
|
271
|
+
*/
|
|
272
|
+
getStats() {
|
|
273
|
+
const completedJobs = this.jobHistory.length;
|
|
274
|
+
const totalItemsCreated = this.jobHistory.reduce((sum, job) => sum + job.itemsCreated.length, 0);
|
|
275
|
+
return {
|
|
276
|
+
activeJob: this.hasActiveJob(),
|
|
277
|
+
currentJobId: this.currentJob?.jobId ?? null,
|
|
278
|
+
currentJobDuration: this.currentJob ? Date.now() - this.currentJob.startTime : null,
|
|
279
|
+
itemsInCurrentJob: this.currentJob?.itemsCreated.length ?? 0,
|
|
280
|
+
codeQueueSize: this.getQueueSize(),
|
|
281
|
+
completedJobs,
|
|
282
|
+
totalItemsCreated: totalItemsCreated + (this.currentJob?.itemsCreated.length ?? 0),
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
// =============================================================================
|
|
287
|
+
// SINGLETON INSTANCE
|
|
288
|
+
// =============================================================================
|
|
289
|
+
let sessionManagerInstance = null;
|
|
290
|
+
/**
|
|
291
|
+
* Get the singleton session manager instance
|
|
292
|
+
*/
|
|
293
|
+
export function getSessionManager() {
|
|
294
|
+
if (!sessionManagerInstance) {
|
|
295
|
+
sessionManagerInstance = new AgentSessionManager();
|
|
296
|
+
}
|
|
297
|
+
return sessionManagerInstance;
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Reset the session manager (useful for testing)
|
|
301
|
+
*/
|
|
302
|
+
export function resetSessionManager() {
|
|
303
|
+
if (sessionManagerInstance) {
|
|
304
|
+
if (sessionManagerInstance.hasActiveJob()) {
|
|
305
|
+
sessionManagerInstance.endJob();
|
|
306
|
+
}
|
|
307
|
+
sessionManagerInstance.clearHistory();
|
|
308
|
+
}
|
|
309
|
+
sessionManagerInstance = null;
|
|
310
|
+
}
|
|
311
|
+
//# sourceMappingURL=session-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../src/agent/session-manager.ts"],"names":[],"mappings":"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"}
|