@pinepaper.studio/mcp-server 1.0.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/LICENSE +21 -0
- package/README.md +406 -0
- package/dist/__tests__/fixtures/index.d.ts +8 -0
- package/dist/__tests__/fixtures/index.d.ts.map +1 -0
- package/dist/__tests__/fixtures/index.js +8 -0
- package/dist/__tests__/fixtures/index.js.map +1 -0
- package/dist/__tests__/fixtures/mock-animations.d.ts +213 -0
- package/dist/__tests__/fixtures/mock-animations.d.ts.map +1 -0
- package/dist/__tests__/fixtures/mock-animations.js +96 -0
- package/dist/__tests__/fixtures/mock-animations.js.map +1 -0
- package/dist/__tests__/fixtures/mock-generators.d.ts +147 -0
- package/dist/__tests__/fixtures/mock-generators.d.ts.map +1 -0
- package/dist/__tests__/fixtures/mock-generators.js +90 -0
- package/dist/__tests__/fixtures/mock-generators.js.map +1 -0
- package/dist/__tests__/fixtures/mock-items.d.ts +157 -0
- package/dist/__tests__/fixtures/mock-items.d.ts.map +1 -0
- package/dist/__tests__/fixtures/mock-items.js +74 -0
- package/dist/__tests__/fixtures/mock-items.js.map +1 -0
- package/dist/__tests__/fixtures/mock-relations.d.ts +147 -0
- package/dist/__tests__/fixtures/mock-relations.d.ts.map +1 -0
- package/dist/__tests__/fixtures/mock-relations.js +90 -0
- package/dist/__tests__/fixtures/mock-relations.js.map +1 -0
- package/dist/browser/bridge.d.ts +127 -0
- package/dist/browser/bridge.d.ts.map +1 -0
- package/dist/browser/bridge.js +320 -0
- package/dist/browser/bridge.js.map +1 -0
- package/dist/browser/index.d.ts +8 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +8 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/puppeteer-controller.d.ts +93 -0
- package/dist/browser/puppeteer-controller.d.ts.map +1 -0
- package/dist/browser/puppeteer-controller.js +280 -0
- package/dist/browser/puppeteer-controller.js.map +1 -0
- package/dist/cli.d.ts +8 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +109 -0
- package/dist/cli.js.map +1 -0
- package/dist/i18n/i18n-manager.d.ts +88 -0
- package/dist/i18n/i18n-manager.d.ts.map +1 -0
- package/dist/i18n/i18n-manager.js +209 -0
- package/dist/i18n/i18n-manager.js.map +1 -0
- package/dist/i18n/index.d.ts +10 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +10 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/locales/ar.d.ts +6 -0
- package/dist/i18n/locales/ar.d.ts.map +1 -0
- package/dist/i18n/locales/ar.js +106 -0
- package/dist/i18n/locales/ar.js.map +1 -0
- package/dist/i18n/locales/base.d.ts +17 -0
- package/dist/i18n/locales/base.d.ts.map +1 -0
- package/dist/i18n/locales/base.js +213 -0
- package/dist/i18n/locales/base.js.map +1 -0
- package/dist/i18n/locales/bn.d.ts +6 -0
- package/dist/i18n/locales/bn.d.ts.map +1 -0
- package/dist/i18n/locales/bn.js +106 -0
- package/dist/i18n/locales/bn.js.map +1 -0
- package/dist/i18n/locales/chp.d.ts +8 -0
- package/dist/i18n/locales/chp.d.ts.map +1 -0
- package/dist/i18n/locales/chp.js +11 -0
- package/dist/i18n/locales/chp.js.map +1 -0
- package/dist/i18n/locales/cr.d.ts +8 -0
- package/dist/i18n/locales/cr.d.ts.map +1 -0
- package/dist/i18n/locales/cr.js +11 -0
- package/dist/i18n/locales/cr.js.map +1 -0
- package/dist/i18n/locales/crg.d.ts +8 -0
- package/dist/i18n/locales/crg.d.ts.map +1 -0
- package/dist/i18n/locales/crg.js +11 -0
- package/dist/i18n/locales/crg.js.map +1 -0
- package/dist/i18n/locales/cs.d.ts +6 -0
- package/dist/i18n/locales/cs.d.ts.map +1 -0
- package/dist/i18n/locales/cs.js +106 -0
- package/dist/i18n/locales/cs.js.map +1 -0
- package/dist/i18n/locales/da.d.ts +6 -0
- package/dist/i18n/locales/da.d.ts.map +1 -0
- package/dist/i18n/locales/da.js +106 -0
- package/dist/i18n/locales/da.js.map +1 -0
- package/dist/i18n/locales/de.d.ts +6 -0
- package/dist/i18n/locales/de.d.ts.map +1 -0
- package/dist/i18n/locales/de.js +106 -0
- package/dist/i18n/locales/de.js.map +1 -0
- package/dist/i18n/locales/el.d.ts +6 -0
- package/dist/i18n/locales/el.d.ts.map +1 -0
- package/dist/i18n/locales/el.js +106 -0
- package/dist/i18n/locales/el.js.map +1 -0
- package/dist/i18n/locales/en.d.ts +6 -0
- package/dist/i18n/locales/en.d.ts.map +1 -0
- package/dist/i18n/locales/en.js +383 -0
- package/dist/i18n/locales/en.js.map +1 -0
- package/dist/i18n/locales/es.d.ts +6 -0
- package/dist/i18n/locales/es.d.ts.map +1 -0
- package/dist/i18n/locales/es.js +106 -0
- package/dist/i18n/locales/es.js.map +1 -0
- package/dist/i18n/locales/fa.d.ts +6 -0
- package/dist/i18n/locales/fa.d.ts.map +1 -0
- package/dist/i18n/locales/fa.js +106 -0
- package/dist/i18n/locales/fa.js.map +1 -0
- package/dist/i18n/locales/fi.d.ts +6 -0
- package/dist/i18n/locales/fi.d.ts.map +1 -0
- package/dist/i18n/locales/fi.js +106 -0
- package/dist/i18n/locales/fi.js.map +1 -0
- package/dist/i18n/locales/fil.d.ts +6 -0
- package/dist/i18n/locales/fil.d.ts.map +1 -0
- package/dist/i18n/locales/fil.js +383 -0
- package/dist/i18n/locales/fil.js.map +1 -0
- package/dist/i18n/locales/fr.d.ts +6 -0
- package/dist/i18n/locales/fr.d.ts.map +1 -0
- package/dist/i18n/locales/fr.js +106 -0
- package/dist/i18n/locales/fr.js.map +1 -0
- package/dist/i18n/locales/gu.d.ts +6 -0
- package/dist/i18n/locales/gu.d.ts.map +1 -0
- package/dist/i18n/locales/gu.js +106 -0
- package/dist/i18n/locales/gu.js.map +1 -0
- package/dist/i18n/locales/he.d.ts +6 -0
- package/dist/i18n/locales/he.d.ts.map +1 -0
- package/dist/i18n/locales/he.js +106 -0
- package/dist/i18n/locales/he.js.map +1 -0
- package/dist/i18n/locales/hi.d.ts +6 -0
- package/dist/i18n/locales/hi.d.ts.map +1 -0
- package/dist/i18n/locales/hi.js +106 -0
- package/dist/i18n/locales/hi.js.map +1 -0
- package/dist/i18n/locales/hu.d.ts +6 -0
- package/dist/i18n/locales/hu.d.ts.map +1 -0
- package/dist/i18n/locales/hu.js +106 -0
- package/dist/i18n/locales/hu.js.map +1 -0
- package/dist/i18n/locales/id.d.ts +6 -0
- package/dist/i18n/locales/id.d.ts.map +1 -0
- package/dist/i18n/locales/id.js +106 -0
- package/dist/i18n/locales/id.js.map +1 -0
- package/dist/i18n/locales/index.d.ts +110 -0
- package/dist/i18n/locales/index.d.ts.map +1 -0
- package/dist/i18n/locales/index.js +123 -0
- package/dist/i18n/locales/index.js.map +1 -0
- package/dist/i18n/locales/is.d.ts +6 -0
- package/dist/i18n/locales/is.d.ts.map +1 -0
- package/dist/i18n/locales/is.js +383 -0
- package/dist/i18n/locales/is.js.map +1 -0
- package/dist/i18n/locales/it.d.ts +6 -0
- package/dist/i18n/locales/it.d.ts.map +1 -0
- package/dist/i18n/locales/it.js +106 -0
- package/dist/i18n/locales/it.js.map +1 -0
- package/dist/i18n/locales/iu.d.ts +8 -0
- package/dist/i18n/locales/iu.d.ts.map +1 -0
- package/dist/i18n/locales/iu.js +11 -0
- package/dist/i18n/locales/iu.js.map +1 -0
- package/dist/i18n/locales/ja.d.ts +6 -0
- package/dist/i18n/locales/ja.d.ts.map +1 -0
- package/dist/i18n/locales/ja.js +106 -0
- package/dist/i18n/locales/ja.js.map +1 -0
- package/dist/i18n/locales/kn.d.ts +6 -0
- package/dist/i18n/locales/kn.d.ts.map +1 -0
- package/dist/i18n/locales/kn.js +106 -0
- package/dist/i18n/locales/kn.js.map +1 -0
- package/dist/i18n/locales/ko.d.ts +6 -0
- package/dist/i18n/locales/ko.d.ts.map +1 -0
- package/dist/i18n/locales/ko.js +106 -0
- package/dist/i18n/locales/ko.js.map +1 -0
- package/dist/i18n/locales/mic.d.ts +8 -0
- package/dist/i18n/locales/mic.d.ts.map +1 -0
- package/dist/i18n/locales/mic.js +11 -0
- package/dist/i18n/locales/mic.js.map +1 -0
- package/dist/i18n/locales/ml.d.ts +6 -0
- package/dist/i18n/locales/ml.d.ts.map +1 -0
- package/dist/i18n/locales/ml.js +106 -0
- package/dist/i18n/locales/ml.js.map +1 -0
- package/dist/i18n/locales/moh.d.ts +8 -0
- package/dist/i18n/locales/moh.d.ts.map +1 -0
- package/dist/i18n/locales/moh.js +11 -0
- package/dist/i18n/locales/moh.js.map +1 -0
- package/dist/i18n/locales/mr.d.ts +6 -0
- package/dist/i18n/locales/mr.d.ts.map +1 -0
- package/dist/i18n/locales/mr.js +106 -0
- package/dist/i18n/locales/mr.js.map +1 -0
- package/dist/i18n/locales/ms.d.ts +6 -0
- package/dist/i18n/locales/ms.d.ts.map +1 -0
- package/dist/i18n/locales/ms.js +106 -0
- package/dist/i18n/locales/ms.js.map +1 -0
- package/dist/i18n/locales/nl.d.ts +6 -0
- package/dist/i18n/locales/nl.d.ts.map +1 -0
- package/dist/i18n/locales/nl.js +106 -0
- package/dist/i18n/locales/nl.js.map +1 -0
- package/dist/i18n/locales/no.d.ts +6 -0
- package/dist/i18n/locales/no.d.ts.map +1 -0
- package/dist/i18n/locales/no.js +106 -0
- package/dist/i18n/locales/no.js.map +1 -0
- package/dist/i18n/locales/oj.d.ts +8 -0
- package/dist/i18n/locales/oj.d.ts.map +1 -0
- package/dist/i18n/locales/oj.js +11 -0
- package/dist/i18n/locales/oj.js.map +1 -0
- package/dist/i18n/locales/pa.d.ts +6 -0
- package/dist/i18n/locales/pa.d.ts.map +1 -0
- package/dist/i18n/locales/pa.js +106 -0
- package/dist/i18n/locales/pa.js.map +1 -0
- package/dist/i18n/locales/pl.d.ts +6 -0
- package/dist/i18n/locales/pl.d.ts.map +1 -0
- package/dist/i18n/locales/pl.js +106 -0
- package/dist/i18n/locales/pl.js.map +1 -0
- package/dist/i18n/locales/pt-BR.d.ts +6 -0
- package/dist/i18n/locales/pt-BR.d.ts.map +1 -0
- package/dist/i18n/locales/pt-BR.js +106 -0
- package/dist/i18n/locales/pt-BR.js.map +1 -0
- package/dist/i18n/locales/pt.d.ts +6 -0
- package/dist/i18n/locales/pt.d.ts.map +1 -0
- package/dist/i18n/locales/pt.js +106 -0
- package/dist/i18n/locales/pt.js.map +1 -0
- package/dist/i18n/locales/ro.d.ts +6 -0
- package/dist/i18n/locales/ro.d.ts.map +1 -0
- package/dist/i18n/locales/ro.js +106 -0
- package/dist/i18n/locales/ro.js.map +1 -0
- package/dist/i18n/locales/ru.d.ts +6 -0
- package/dist/i18n/locales/ru.d.ts.map +1 -0
- package/dist/i18n/locales/ru.js +106 -0
- package/dist/i18n/locales/ru.js.map +1 -0
- package/dist/i18n/locales/sv.d.ts +6 -0
- package/dist/i18n/locales/sv.d.ts.map +1 -0
- package/dist/i18n/locales/sv.js +106 -0
- package/dist/i18n/locales/sv.js.map +1 -0
- package/dist/i18n/locales/ta.d.ts +6 -0
- package/dist/i18n/locales/ta.d.ts.map +1 -0
- package/dist/i18n/locales/ta.js +106 -0
- package/dist/i18n/locales/ta.js.map +1 -0
- package/dist/i18n/locales/te.d.ts +6 -0
- package/dist/i18n/locales/te.d.ts.map +1 -0
- package/dist/i18n/locales/te.js +106 -0
- package/dist/i18n/locales/te.js.map +1 -0
- package/dist/i18n/locales/th.d.ts +6 -0
- package/dist/i18n/locales/th.d.ts.map +1 -0
- package/dist/i18n/locales/th.js +106 -0
- package/dist/i18n/locales/th.js.map +1 -0
- package/dist/i18n/locales/tl.d.ts +6 -0
- package/dist/i18n/locales/tl.d.ts.map +1 -0
- package/dist/i18n/locales/tl.js +106 -0
- package/dist/i18n/locales/tl.js.map +1 -0
- package/dist/i18n/locales/tr.d.ts +6 -0
- package/dist/i18n/locales/tr.d.ts.map +1 -0
- package/dist/i18n/locales/tr.js +106 -0
- package/dist/i18n/locales/tr.js.map +1 -0
- package/dist/i18n/locales/uk.d.ts +6 -0
- package/dist/i18n/locales/uk.d.ts.map +1 -0
- package/dist/i18n/locales/uk.js +106 -0
- package/dist/i18n/locales/uk.js.map +1 -0
- package/dist/i18n/locales/ur.d.ts +6 -0
- package/dist/i18n/locales/ur.d.ts.map +1 -0
- package/dist/i18n/locales/ur.js +383 -0
- package/dist/i18n/locales/ur.js.map +1 -0
- package/dist/i18n/locales/vi.d.ts +6 -0
- package/dist/i18n/locales/vi.d.ts.map +1 -0
- package/dist/i18n/locales/vi.js +106 -0
- package/dist/i18n/locales/vi.js.map +1 -0
- package/dist/i18n/locales/zh-CN.d.ts +6 -0
- package/dist/i18n/locales/zh-CN.d.ts.map +1 -0
- package/dist/i18n/locales/zh-CN.js +106 -0
- package/dist/i18n/locales/zh-CN.js.map +1 -0
- package/dist/i18n/locales/zh-TW.d.ts +6 -0
- package/dist/i18n/locales/zh-TW.d.ts.map +1 -0
- package/dist/i18n/locales/zh-TW.js +106 -0
- package/dist/i18n/locales/zh-TW.js.map +1 -0
- package/dist/i18n/types.d.ts +101 -0
- package/dist/i18n/types.d.ts.map +1 -0
- package/dist/i18n/types.js +65 -0
- package/dist/i18n/types.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +472 -0
- package/dist/index.js.map +1 -0
- package/dist/server/index.d.ts +39 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +89 -0
- package/dist/server/index.js.map +1 -0
- package/dist/tools/definitions.d.ts +26 -0
- package/dist/tools/definitions.d.ts.map +1 -0
- package/dist/tools/definitions.js +785 -0
- package/dist/tools/definitions.js.map +1 -0
- package/dist/tools/handlers.d.ts +19 -0
- package/dist/tools/handlers.d.ts.map +1 -0
- package/dist/tools/handlers.js +477 -0
- package/dist/tools/handlers.js.map +1 -0
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +3 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/types/code-generator.d.ts +97 -0
- package/dist/types/code-generator.d.ts.map +1 -0
- package/dist/types/code-generator.js +545 -0
- package/dist/types/code-generator.js.map +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/schemas.d.ts +707 -0
- package/dist/types/schemas.d.ts.map +1 -0
- package/dist/types/schemas.js +341 -0
- package/dist/types/schemas.js.map +1 -0
- package/package.json +81 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/browser/bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PinePaper Browser Module
|
|
3
|
+
*
|
|
4
|
+
* Exports for browser-side usage of PinePaper MCP tools.
|
|
5
|
+
*/
|
|
6
|
+
export { PinePaperBridge, PinePaperStudioHandler, createBridge, createStudioHandler, type BridgeMessage, type BridgeConfig, } from './bridge.js';
|
|
7
|
+
export { PinePaperBrowserController, getBrowserController, resetBrowserController, type BrowserControllerConfig, type ExecuteResult, } from './puppeteer-controller.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,YAAY,EACZ,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EACpB,sBAAsB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,aAAa,GACnB,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PinePaper Browser Module
|
|
3
|
+
*
|
|
4
|
+
* Exports for browser-side usage of PinePaper MCP tools.
|
|
5
|
+
*/
|
|
6
|
+
export { PinePaperBridge, PinePaperStudioHandler, createBridge, createStudioHandler, } from './bridge.js';
|
|
7
|
+
export { PinePaperBrowserController, getBrowserController, resetBrowserController, } from './puppeteer-controller.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,YAAY,EACZ,mBAAmB,GAGpB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EACpB,sBAAsB,GAGvB,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PinePaper Puppeteer Controller
|
|
3
|
+
*
|
|
4
|
+
* Controls a real browser instance running PinePaper Studio.
|
|
5
|
+
* Executes code directly via page.evaluate() and provides screenshots.
|
|
6
|
+
*/
|
|
7
|
+
export interface BrowserControllerConfig {
|
|
8
|
+
/** PinePaper Studio URL (default: https://pinepaper.studio) */
|
|
9
|
+
studioUrl?: string;
|
|
10
|
+
/** Whether to run browser in headless mode (default: false for visibility) */
|
|
11
|
+
headless?: boolean;
|
|
12
|
+
/** Browser viewport width (default: 1280) */
|
|
13
|
+
viewportWidth?: number;
|
|
14
|
+
/** Browser viewport height (default: 800) */
|
|
15
|
+
viewportHeight?: number;
|
|
16
|
+
/** Timeout for page operations in ms (default: 30000) */
|
|
17
|
+
timeout?: number;
|
|
18
|
+
}
|
|
19
|
+
export interface ExecuteResult {
|
|
20
|
+
success: boolean;
|
|
21
|
+
result?: unknown;
|
|
22
|
+
error?: string;
|
|
23
|
+
screenshot?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Controls PinePaper Studio via Puppeteer.
|
|
27
|
+
*
|
|
28
|
+
* This controller:
|
|
29
|
+
* 1. Launches a browser and navigates to PinePaper Studio
|
|
30
|
+
* 2. Executes JavaScript code directly in the page context
|
|
31
|
+
* 3. Captures screenshots to show results
|
|
32
|
+
*/
|
|
33
|
+
export declare class PinePaperBrowserController {
|
|
34
|
+
private browser;
|
|
35
|
+
private page;
|
|
36
|
+
private config;
|
|
37
|
+
private isConnected;
|
|
38
|
+
constructor(config?: BrowserControllerConfig);
|
|
39
|
+
/**
|
|
40
|
+
* Check if connected to browser
|
|
41
|
+
*/
|
|
42
|
+
get connected(): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Get current studio URL
|
|
45
|
+
*/
|
|
46
|
+
get studioUrl(): string;
|
|
47
|
+
/**
|
|
48
|
+
* Launch browser and navigate to PinePaper Studio
|
|
49
|
+
*/
|
|
50
|
+
connect(): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Disconnect and close browser
|
|
53
|
+
*/
|
|
54
|
+
disconnect(): Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* Execute JavaScript code in PinePaper Studio
|
|
57
|
+
*/
|
|
58
|
+
executeCode(code: string, takeScreenshot?: boolean): Promise<ExecuteResult>;
|
|
59
|
+
/**
|
|
60
|
+
* Take a screenshot of the current canvas
|
|
61
|
+
*/
|
|
62
|
+
takeScreenshot(): Promise<string | undefined>;
|
|
63
|
+
/**
|
|
64
|
+
* Get the current page URL
|
|
65
|
+
*/
|
|
66
|
+
getCurrentUrl(): Promise<string | undefined>;
|
|
67
|
+
/**
|
|
68
|
+
* Navigate to a different URL
|
|
69
|
+
*/
|
|
70
|
+
navigateTo(url: string): Promise<void>;
|
|
71
|
+
/**
|
|
72
|
+
* Reload the page
|
|
73
|
+
*/
|
|
74
|
+
reload(): Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* Refresh the page and wait for PinePaper to be ready again.
|
|
77
|
+
* This is the most reliable way to get a clean canvas.
|
|
78
|
+
*/
|
|
79
|
+
refreshPage(): Promise<void>;
|
|
80
|
+
/**
|
|
81
|
+
* Check if PinePaper API is available
|
|
82
|
+
*/
|
|
83
|
+
checkPinePaperReady(): Promise<boolean>;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Get or create the global browser controller instance
|
|
87
|
+
*/
|
|
88
|
+
export declare function getBrowserController(config?: BrowserControllerConfig): PinePaperBrowserController;
|
|
89
|
+
/**
|
|
90
|
+
* Reset the global controller (for testing)
|
|
91
|
+
*/
|
|
92
|
+
export declare function resetBrowserController(): void;
|
|
93
|
+
//# sourceMappingURL=puppeteer-controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"puppeteer-controller.d.ts","sourceRoot":"","sources":["../../src/browser/puppeteer-controller.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,MAAM,WAAW,uBAAuB;IACtC,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6CAA6C;IAC7C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAMD;;;;;;;GAOG;AACH,qBAAa,0BAA0B;IACrC,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,IAAI,CAAqB;IACjC,OAAO,CAAC,MAAM,CAAoC;IAClD,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,GAAE,uBAA4B;IAgBhD;;OAEG;IACH,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAwD9B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAcjC;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,UAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IA6C9E;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IA6BnD;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIlD;;OAEG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5C;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAU7B;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IA2BlC;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC;CAiB9C;AAQD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,CAAC,EAAE,uBAAuB,GAC/B,0BAA0B,CAK5B;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAK7C"}
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PinePaper Puppeteer Controller
|
|
3
|
+
*
|
|
4
|
+
* Controls a real browser instance running PinePaper Studio.
|
|
5
|
+
* Executes code directly via page.evaluate() and provides screenshots.
|
|
6
|
+
*/
|
|
7
|
+
// =============================================================================
|
|
8
|
+
// BROWSER CONTROLLER CLASS
|
|
9
|
+
// =============================================================================
|
|
10
|
+
/**
|
|
11
|
+
* Controls PinePaper Studio via Puppeteer.
|
|
12
|
+
*
|
|
13
|
+
* This controller:
|
|
14
|
+
* 1. Launches a browser and navigates to PinePaper Studio
|
|
15
|
+
* 2. Executes JavaScript code directly in the page context
|
|
16
|
+
* 3. Captures screenshots to show results
|
|
17
|
+
*/
|
|
18
|
+
export class PinePaperBrowserController {
|
|
19
|
+
browser = null;
|
|
20
|
+
page = null;
|
|
21
|
+
config;
|
|
22
|
+
isConnected = false;
|
|
23
|
+
constructor(config = {}) {
|
|
24
|
+
// Ensure URL points to /editor where the code console and API are available
|
|
25
|
+
let studioUrl = config.studioUrl || 'https://pinepaper.studio';
|
|
26
|
+
if (!studioUrl.includes('/editor')) {
|
|
27
|
+
studioUrl = studioUrl.replace(/\/$/, '') + '/editor';
|
|
28
|
+
}
|
|
29
|
+
this.config = {
|
|
30
|
+
studioUrl,
|
|
31
|
+
headless: config.headless ?? false, // Default to visible browser
|
|
32
|
+
viewportWidth: config.viewportWidth || 1280,
|
|
33
|
+
viewportHeight: config.viewportHeight || 800,
|
|
34
|
+
timeout: config.timeout || 30000,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Check if connected to browser
|
|
39
|
+
*/
|
|
40
|
+
get connected() {
|
|
41
|
+
return this.isConnected && this.page !== null;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get current studio URL
|
|
45
|
+
*/
|
|
46
|
+
get studioUrl() {
|
|
47
|
+
return this.config.studioUrl;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Launch browser and navigate to PinePaper Studio
|
|
51
|
+
*/
|
|
52
|
+
async connect() {
|
|
53
|
+
if (this.isConnected) {
|
|
54
|
+
console.error('[PinePaper] Already connected');
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
try {
|
|
58
|
+
// Dynamic import to avoid issues when puppeteer isn't installed
|
|
59
|
+
const puppeteer = await import('puppeteer');
|
|
60
|
+
console.error('[PinePaper] Launching browser...');
|
|
61
|
+
this.browser = await puppeteer.default.launch({
|
|
62
|
+
headless: this.config.headless,
|
|
63
|
+
args: [
|
|
64
|
+
'--no-sandbox',
|
|
65
|
+
'--disable-setuid-sandbox',
|
|
66
|
+
`--window-size=${this.config.viewportWidth},${this.config.viewportHeight}`,
|
|
67
|
+
],
|
|
68
|
+
});
|
|
69
|
+
this.page = await this.browser.newPage();
|
|
70
|
+
await this.page.setViewport({
|
|
71
|
+
width: this.config.viewportWidth,
|
|
72
|
+
height: this.config.viewportHeight,
|
|
73
|
+
});
|
|
74
|
+
console.error(`[PinePaper] Navigating to ${this.config.studioUrl}...`);
|
|
75
|
+
await this.page.goto(this.config.studioUrl, {
|
|
76
|
+
waitUntil: 'networkidle2',
|
|
77
|
+
timeout: this.config.timeout,
|
|
78
|
+
});
|
|
79
|
+
// Wait for PinePaper to be ready (check for app object)
|
|
80
|
+
console.error('[PinePaper] Waiting for PinePaper Studio to initialize...');
|
|
81
|
+
await this.page.waitForFunction(() => {
|
|
82
|
+
// Check if PinePaper's global app or API is available
|
|
83
|
+
return (typeof window.app !== 'undefined' ||
|
|
84
|
+
typeof window.pinepaper !== 'undefined' ||
|
|
85
|
+
typeof window.paper !== 'undefined');
|
|
86
|
+
}, { timeout: this.config.timeout });
|
|
87
|
+
this.isConnected = true;
|
|
88
|
+
console.error('[PinePaper] Connected to PinePaper Studio');
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
await this.disconnect();
|
|
92
|
+
throw new Error(`Failed to connect to PinePaper Studio: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Disconnect and close browser
|
|
97
|
+
*/
|
|
98
|
+
async disconnect() {
|
|
99
|
+
if (this.browser) {
|
|
100
|
+
try {
|
|
101
|
+
await this.browser.close();
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
// Ignore errors during cleanup
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
this.browser = null;
|
|
108
|
+
this.page = null;
|
|
109
|
+
this.isConnected = false;
|
|
110
|
+
console.error('[PinePaper] Disconnected from browser');
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Execute JavaScript code in PinePaper Studio
|
|
114
|
+
*/
|
|
115
|
+
async executeCode(code, takeScreenshot = true) {
|
|
116
|
+
if (!this.page || !this.isConnected) {
|
|
117
|
+
return {
|
|
118
|
+
success: false,
|
|
119
|
+
error: 'Not connected to PinePaper Studio. Call connect() first.',
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
try {
|
|
123
|
+
// Execute the code in page context
|
|
124
|
+
const result = await this.page.evaluate((codeToRun) => {
|
|
125
|
+
try {
|
|
126
|
+
// eslint-disable-next-line no-eval
|
|
127
|
+
const evalResult = eval(codeToRun);
|
|
128
|
+
// Handle promises
|
|
129
|
+
if (evalResult instanceof Promise) {
|
|
130
|
+
return evalResult.then((r) => ({ success: true, result: r }));
|
|
131
|
+
}
|
|
132
|
+
return { success: true, result: evalResult };
|
|
133
|
+
}
|
|
134
|
+
catch (e) {
|
|
135
|
+
return {
|
|
136
|
+
success: false,
|
|
137
|
+
error: e instanceof Error ? e.message : 'Execution error',
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
}, code);
|
|
141
|
+
// Take screenshot if requested
|
|
142
|
+
let screenshot;
|
|
143
|
+
if (takeScreenshot && result.success) {
|
|
144
|
+
screenshot = await this.takeScreenshot();
|
|
145
|
+
}
|
|
146
|
+
return {
|
|
147
|
+
...result,
|
|
148
|
+
screenshot,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
return {
|
|
153
|
+
success: false,
|
|
154
|
+
error: error instanceof Error ? error.message : 'Unknown execution error',
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Take a screenshot of the current canvas
|
|
160
|
+
*/
|
|
161
|
+
async takeScreenshot() {
|
|
162
|
+
if (!this.page) {
|
|
163
|
+
return undefined;
|
|
164
|
+
}
|
|
165
|
+
try {
|
|
166
|
+
// Try to capture just the canvas element, fallback to full page
|
|
167
|
+
const canvasElement = await this.page.$('canvas');
|
|
168
|
+
if (canvasElement) {
|
|
169
|
+
const screenshot = await canvasElement.screenshot({
|
|
170
|
+
encoding: 'base64',
|
|
171
|
+
type: 'png',
|
|
172
|
+
});
|
|
173
|
+
return screenshot;
|
|
174
|
+
}
|
|
175
|
+
// Fallback to full page
|
|
176
|
+
const screenshot = await this.page.screenshot({
|
|
177
|
+
encoding: 'base64',
|
|
178
|
+
type: 'png',
|
|
179
|
+
fullPage: false,
|
|
180
|
+
});
|
|
181
|
+
return screenshot;
|
|
182
|
+
}
|
|
183
|
+
catch {
|
|
184
|
+
return undefined;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Get the current page URL
|
|
189
|
+
*/
|
|
190
|
+
async getCurrentUrl() {
|
|
191
|
+
return this.page?.url();
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Navigate to a different URL
|
|
195
|
+
*/
|
|
196
|
+
async navigateTo(url) {
|
|
197
|
+
if (!this.page) {
|
|
198
|
+
throw new Error('Not connected to browser');
|
|
199
|
+
}
|
|
200
|
+
await this.page.goto(url, {
|
|
201
|
+
waitUntil: 'networkidle2',
|
|
202
|
+
timeout: this.config.timeout,
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Reload the page
|
|
207
|
+
*/
|
|
208
|
+
async reload() {
|
|
209
|
+
if (!this.page) {
|
|
210
|
+
throw new Error('Not connected to browser');
|
|
211
|
+
}
|
|
212
|
+
await this.page.reload({
|
|
213
|
+
waitUntil: 'networkidle2',
|
|
214
|
+
timeout: this.config.timeout,
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Refresh the page and wait for PinePaper to be ready again.
|
|
219
|
+
* This is the most reliable way to get a clean canvas.
|
|
220
|
+
*/
|
|
221
|
+
async refreshPage() {
|
|
222
|
+
if (!this.page) {
|
|
223
|
+
throw new Error('Not connected to browser');
|
|
224
|
+
}
|
|
225
|
+
console.error('[PinePaper] Refreshing page...');
|
|
226
|
+
await this.page.reload({
|
|
227
|
+
waitUntil: 'networkidle2',
|
|
228
|
+
timeout: this.config.timeout,
|
|
229
|
+
});
|
|
230
|
+
// Wait for PinePaper to be ready again
|
|
231
|
+
console.error('[PinePaper] Waiting for PinePaper Studio to reinitialize...');
|
|
232
|
+
await this.page.waitForFunction(() => {
|
|
233
|
+
return (typeof window.app !== 'undefined' ||
|
|
234
|
+
typeof window.pinepaper !== 'undefined' ||
|
|
235
|
+
typeof window.paper !== 'undefined');
|
|
236
|
+
}, { timeout: this.config.timeout });
|
|
237
|
+
console.error('[PinePaper] Page refreshed and ready');
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Check if PinePaper API is available
|
|
241
|
+
*/
|
|
242
|
+
async checkPinePaperReady() {
|
|
243
|
+
if (!this.page) {
|
|
244
|
+
return false;
|
|
245
|
+
}
|
|
246
|
+
try {
|
|
247
|
+
return await this.page.evaluate(() => {
|
|
248
|
+
return (typeof window.app !== 'undefined' ||
|
|
249
|
+
typeof window.pinepaper !== 'undefined' ||
|
|
250
|
+
typeof window.paper !== 'undefined');
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
catch {
|
|
254
|
+
return false;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
// =============================================================================
|
|
259
|
+
// SINGLETON INSTANCE
|
|
260
|
+
// =============================================================================
|
|
261
|
+
let globalController = null;
|
|
262
|
+
/**
|
|
263
|
+
* Get or create the global browser controller instance
|
|
264
|
+
*/
|
|
265
|
+
export function getBrowserController(config) {
|
|
266
|
+
if (!globalController) {
|
|
267
|
+
globalController = new PinePaperBrowserController(config);
|
|
268
|
+
}
|
|
269
|
+
return globalController;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Reset the global controller (for testing)
|
|
273
|
+
*/
|
|
274
|
+
export function resetBrowserController() {
|
|
275
|
+
if (globalController) {
|
|
276
|
+
globalController.disconnect().catch(() => { });
|
|
277
|
+
globalController = null;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
//# sourceMappingURL=puppeteer-controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"puppeteer-controller.js","sourceRoot":"","sources":["../../src/browser/puppeteer-controller.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;GAIG"}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
/**
|
|
3
|
+
* PinePaper MCP Server CLI
|
|
4
|
+
*
|
|
5
|
+
* Entry point for running the MCP server from command line.
|
|
6
|
+
*/
|
|
7
|
+
import { createServer } from './index.js';
|
|
8
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
9
|
+
const VERSION = '1.0.0';
|
|
10
|
+
async function main() {
|
|
11
|
+
const args = process.argv.slice(2);
|
|
12
|
+
// Handle help flag
|
|
13
|
+
if (args.includes('--help') || args.includes('-h')) {
|
|
14
|
+
console.log(`
|
|
15
|
+
PinePaper MCP Server v${VERSION}
|
|
16
|
+
|
|
17
|
+
Create animated graphics with AI using the Model Context Protocol.
|
|
18
|
+
|
|
19
|
+
USAGE:
|
|
20
|
+
pinepaper-mcp [options]
|
|
21
|
+
|
|
22
|
+
OPTIONS:
|
|
23
|
+
--help, -h Show this help message
|
|
24
|
+
--version, -v Show version number
|
|
25
|
+
|
|
26
|
+
CONFIGURATION:
|
|
27
|
+
Add to your Claude Desktop config (claude_desktop_config.json):
|
|
28
|
+
|
|
29
|
+
{
|
|
30
|
+
"mcpServers": {
|
|
31
|
+
"pinepaper": {
|
|
32
|
+
"command": "npx",
|
|
33
|
+
"args": ["-y", "@pinepaper/mcp-server"]
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
TOOLS:
|
|
39
|
+
Item Creation:
|
|
40
|
+
- pinepaper_create_item Create text, shapes, graphics
|
|
41
|
+
- pinepaper_modify_item Modify item properties
|
|
42
|
+
- pinepaper_delete_item Remove items
|
|
43
|
+
|
|
44
|
+
Relations (Animation):
|
|
45
|
+
- pinepaper_add_relation Create behavior relationships
|
|
46
|
+
- pinepaper_remove_relation Remove relationships
|
|
47
|
+
- pinepaper_query_relations Query existing relations
|
|
48
|
+
|
|
49
|
+
Animation:
|
|
50
|
+
- pinepaper_animate Simple loop animations
|
|
51
|
+
- pinepaper_keyframe_animate Timed keyframe animations
|
|
52
|
+
- pinepaper_play_timeline Control playback
|
|
53
|
+
|
|
54
|
+
Generators:
|
|
55
|
+
- pinepaper_execute_generator Run background generators
|
|
56
|
+
- pinepaper_list_generators List available generators
|
|
57
|
+
|
|
58
|
+
Effects:
|
|
59
|
+
- pinepaper_apply_effect Apply visual effects
|
|
60
|
+
|
|
61
|
+
Query:
|
|
62
|
+
- pinepaper_get_items Get canvas items
|
|
63
|
+
- pinepaper_get_relation_stats Get relation statistics
|
|
64
|
+
|
|
65
|
+
Canvas:
|
|
66
|
+
- pinepaper_set_background_color Set background
|
|
67
|
+
- pinepaper_set_canvas_size Set dimensions
|
|
68
|
+
|
|
69
|
+
Export:
|
|
70
|
+
- pinepaper_export_svg Export as animated SVG
|
|
71
|
+
- pinepaper_export_training_data Export LLM training pairs
|
|
72
|
+
|
|
73
|
+
DOCUMENTATION:
|
|
74
|
+
https://pinepaper.studio/docs/mcp
|
|
75
|
+
|
|
76
|
+
SUPPORT:
|
|
77
|
+
https://github.com/pinepaper/mcp-server/issues
|
|
78
|
+
`);
|
|
79
|
+
process.exit(0);
|
|
80
|
+
}
|
|
81
|
+
// Handle version flag
|
|
82
|
+
if (args.includes('--version') || args.includes('-v')) {
|
|
83
|
+
console.log(VERSION);
|
|
84
|
+
process.exit(0);
|
|
85
|
+
}
|
|
86
|
+
// Start the server
|
|
87
|
+
try {
|
|
88
|
+
const server = await createServer();
|
|
89
|
+
const transport = new StdioServerTransport();
|
|
90
|
+
console.error('╔═══════════════════════════════════════════════════╗');
|
|
91
|
+
console.error('║ PinePaper MCP Server v' + VERSION + ' ║');
|
|
92
|
+
console.error('╠═══════════════════════════════════════════════════╣');
|
|
93
|
+
console.error('║ Create animated graphics with AI ║');
|
|
94
|
+
console.error('║ https://pinepaper.studio ║');
|
|
95
|
+
console.error('╚═══════════════════════════════════════════════════╝');
|
|
96
|
+
console.error('');
|
|
97
|
+
console.error('Server starting on stdio transport...');
|
|
98
|
+
await server.connect(transport);
|
|
99
|
+
console.error('✓ Server connected and ready');
|
|
100
|
+
console.error('');
|
|
101
|
+
console.error('Waiting for tool calls...');
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
console.error('Failed to start server:', error);
|
|
105
|
+
process.exit(1);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
main();
|
|
109
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,mBAAmB;IACnB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC;wBACQ,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+D9B,CAAC,CAAC;QACC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,sBAAsB;IACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,mBAAmB;IACnB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;QACpC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAE7C,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,mCAAmC,GAAG,OAAO,GAAG,gBAAgB,CAAC,CAAC;QAChF,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAEvD,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEhC,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC9C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* i18n Manager
|
|
3
|
+
*
|
|
4
|
+
* Handles internationalization for the PinePaper MCP Server.
|
|
5
|
+
* Supports all 41 locales from PinePaper Studio.
|
|
6
|
+
*/
|
|
7
|
+
import { SupportedLocale, TranslationKeys, TranslationFunction } from './types.js';
|
|
8
|
+
export interface I18nConfig {
|
|
9
|
+
defaultLocale?: SupportedLocale;
|
|
10
|
+
fallbackLocale?: SupportedLocale;
|
|
11
|
+
loadPath?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare class I18nManager {
|
|
14
|
+
private currentLocale;
|
|
15
|
+
private fallbackLocale;
|
|
16
|
+
private translations;
|
|
17
|
+
private loadedLocales;
|
|
18
|
+
constructor(config?: I18nConfig);
|
|
19
|
+
/**
|
|
20
|
+
* Load translations for a locale
|
|
21
|
+
*/
|
|
22
|
+
loadLocale(locale: SupportedLocale): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Set the current locale
|
|
25
|
+
*/
|
|
26
|
+
setLocale(locale: SupportedLocale): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Get the current locale
|
|
29
|
+
*/
|
|
30
|
+
getLocale(): SupportedLocale;
|
|
31
|
+
/**
|
|
32
|
+
* Check if current locale is RTL
|
|
33
|
+
*/
|
|
34
|
+
isRTL(): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Get translation for a key
|
|
37
|
+
*/
|
|
38
|
+
t(key: string, params?: Record<string, string | number>): string;
|
|
39
|
+
/**
|
|
40
|
+
* Get a translation function bound to current locale
|
|
41
|
+
*/
|
|
42
|
+
getTranslationFunction(): TranslationFunction;
|
|
43
|
+
/**
|
|
44
|
+
* Get all translations for current locale
|
|
45
|
+
*/
|
|
46
|
+
getTranslations(): TranslationKeys | undefined;
|
|
47
|
+
/**
|
|
48
|
+
* Get tool description in current locale
|
|
49
|
+
*/
|
|
50
|
+
getToolDescription(toolName: string): string;
|
|
51
|
+
/**
|
|
52
|
+
* Get tool name in current locale
|
|
53
|
+
*/
|
|
54
|
+
getToolName(toolName: string): string;
|
|
55
|
+
/**
|
|
56
|
+
* Get error message in current locale
|
|
57
|
+
*/
|
|
58
|
+
getError(errorKey: string, params?: Record<string, string | number>): string;
|
|
59
|
+
/**
|
|
60
|
+
* Get success message in current locale
|
|
61
|
+
*/
|
|
62
|
+
getSuccess(successKey: string, params?: Record<string, string | number>): string;
|
|
63
|
+
/**
|
|
64
|
+
* Detect locale from Accept-Language header
|
|
65
|
+
*/
|
|
66
|
+
static detectLocale(acceptLanguage?: string): SupportedLocale;
|
|
67
|
+
/**
|
|
68
|
+
* Get nested value from object
|
|
69
|
+
*/
|
|
70
|
+
private getNestedValue;
|
|
71
|
+
/**
|
|
72
|
+
* Interpolate parameters into translation string
|
|
73
|
+
*/
|
|
74
|
+
private interpolate;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Get the singleton i18n manager instance
|
|
78
|
+
*/
|
|
79
|
+
export declare function getI18n(): I18nManager;
|
|
80
|
+
/**
|
|
81
|
+
* Initialize i18n with a specific locale
|
|
82
|
+
*/
|
|
83
|
+
export declare function initI18n(locale?: SupportedLocale): Promise<I18nManager>;
|
|
84
|
+
/**
|
|
85
|
+
* Shorthand translation function
|
|
86
|
+
*/
|
|
87
|
+
export declare function t(key: string, params?: Record<string, string | number>): string;
|
|
88
|
+
//# sourceMappingURL=i18n-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n-manager.d.ts","sourceRoot":"","sources":["../../src/i18n/i18n-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,eAAe,EAIf,eAAe,EACf,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAMpB,MAAM,WAAW,UAAU;IACzB,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAMD,qBAAa,WAAW;IACtB,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,YAAY,CAAoD;IACxE,OAAO,CAAC,aAAa,CAAmC;gBAE5C,MAAM,GAAE,UAAe;IAKnC;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBxD;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAUvD;;OAEG;IACH,SAAS,IAAI,eAAe;IAI5B;;OAEG;IACH,KAAK,IAAI,OAAO;IAIhB;;OAEG;IACH,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM;IA4BhE;;OAEG;IACH,sBAAsB,IAAI,mBAAmB;IAK7C;;OAEG;IACH,eAAe,IAAI,eAAe,GAAG,SAAS;IAI9C;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI5C;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAIrC;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM;IAI5E;;OAEG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM;IAIhF;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,eAAe;IAsC7D;;OAEG;IACH,OAAO,CAAC,cAAc;IAYtB;;OAEG;IACH,OAAO,CAAC,WAAW;CAQpB;AAQD;;GAEG;AACH,wBAAgB,OAAO,IAAI,WAAW,CAKrC;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAO7E;AAED;;GAEG;AACH,wBAAgB,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,CAE/E"}
|