reportflow-mcp 1.1.2 → 1.2.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 +72 -173
- package/dist/auth-context.d.ts +10 -0
- package/dist/auth-context.d.ts.map +1 -0
- package/dist/auth-context.js +10 -0
- package/dist/auth-context.js.map +1 -0
- package/dist/auth.d.ts +1 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +27 -3
- package/dist/auth.js.map +1 -1
- package/dist/client.d.ts +43 -3
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +30 -4
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +23 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +62 -0
- package/dist/config.js.map +1 -0
- package/dist/http-server.d.ts +16 -0
- package/dist/http-server.d.ts.map +1 -0
- package/dist/http-server.js +267 -0
- package/dist/http-server.js.map +1 -0
- package/dist/http.d.ts +14 -0
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +15 -1
- package/dist/http.js.map +1 -1
- package/dist/index-http.d.ts +2 -0
- package/dist/index-http.d.ts.map +1 -0
- package/dist/index-http.js +14 -0
- package/dist/index-http.js.map +1 -0
- package/dist/server.d.ts +41 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +110 -53
- package/dist/server.js.map +1 -1
- package/dist/telemetry/client.d.ts +30 -0
- package/dist/telemetry/client.d.ts.map +1 -0
- package/dist/telemetry/client.js +85 -0
- package/dist/telemetry/client.js.map +1 -0
- package/dist/telemetry/index.d.ts +4 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +11 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/interceptor.d.ts +9 -0
- package/dist/telemetry/interceptor.d.ts.map +1 -0
- package/dist/telemetry/interceptor.js +72 -0
- package/dist/telemetry/interceptor.js.map +1 -0
- package/dist/tools/generate-pdf-sync.d.ts +32 -8
- package/dist/tools/generate-pdf-sync.d.ts.map +1 -1
- package/dist/tools/generate-pdf-sync.js +118 -10
- package/dist/tools/generate-pdf-sync.js.map +1 -1
- package/package.json +11 -1
package/README.md
CHANGED
|
@@ -1,70 +1,22 @@
|
|
|
1
1
|
# reportflow-mcp
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/reportflow-mcp)
|
|
4
|
+
[](https://opensource.org/licenses/MIT)
|
|
4
5
|
|
|
5
|
-
MCP
|
|
6
|
+
An MCP (Model Context Protocol) server that turns your [ReportFlow](https://re-port-flow.com) templates into PDF reports — invoices, contracts, statements, anything you've designed — straight from Claude or any other MCP-compatible AI agent.
|
|
6
7
|
|
|
7
|
-
##
|
|
8
|
+
## What it does
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
- Generate PDFs from natural-language requests like *"create an invoice for Acme Corp totalling $300"*
|
|
11
|
+
- Expose your ReportFlow designs and their parameter schemas directly to the AI as MCP **Resources**
|
|
12
|
+
- Bulk-generate many PDFs and download them as a single ZIP
|
|
13
|
+
- Save outputs to whichever workspace folder the user is currently in (Claude Desktop / Claude Code / Cursor / VS Code all supported)
|
|
10
14
|
|
|
11
|
-
|
|
12
|
-
|--------|------|
|
|
13
|
-
| `authenticate` | **初回認証 / 再認証**。ブラウザで OAuth2 + ワークスペース選択を行い、トークンを keychain (または XDG file) に保存 |
|
|
14
|
-
| `list_templates` | ワークスペース内のデザイン一覧を取得 |
|
|
15
|
-
| `get_design_parameters` | デザインに必要なパラメータ構造を取得 |
|
|
16
|
-
| `generate_pdf_sync` | PDF を同期生成してローカルパスを返す |
|
|
17
|
-
| `generate_pdf_async` | PDF を非同期生成して requestId を返す |
|
|
18
|
-
| `generate_pdfs_sync` | 複数 PDF を一括同期生成(ZIP)してローカルパスを返す |
|
|
19
|
-
| `generate_pdfs_async` | 複数 PDF を一括非同期生成して requestId を返す |
|
|
20
|
-
| `download_file` | 非同期生成した単一 PDF をダウンロード |
|
|
21
|
-
| `download_zip` | 非同期生成した ZIP をダウンロード |
|
|
22
|
-
| `suggest_params` | **Sampling 使用**。自然文の要件からクライアント AI に params JSON を整形させる |
|
|
15
|
+
## Setup
|
|
23
16
|
|
|
24
|
-
###
|
|
17
|
+
### Claude Desktop / Claude Code / Cursor
|
|
25
18
|
|
|
26
|
-
|
|
27
|
-
|--------|------|
|
|
28
|
-
| `/generate_pdf` | 単一 PDF 生成のステップガイド。`designId` / `description` / `outputDir` を引数として受け取ります |
|
|
29
|
-
| `/generate_pdfs` | 複数 PDF 一括生成のステップガイド。`designId` / `source` / `outputDir` / `zipFileName` |
|
|
30
|
-
| `/reportflow_help` | 提供機能の概要ヘルプ |
|
|
31
|
-
|
|
32
|
-
### Resources(AI のコンテキストに負担をかけず貼り付けられる生データ)
|
|
33
|
-
|
|
34
|
-
| URI | 概要 |
|
|
35
|
-
|-----|------|
|
|
36
|
-
| `reportflow://designs` | デザイン一覧(`list_templates` 同等の JSON) |
|
|
37
|
-
| `reportflow://designs/{designId}/parameters` | 各デザインのパラメータスキーマ(動的テンプレート) |
|
|
38
|
-
| `reportflow://errors` | Content Service が返す主要エラーメッセージカタログ |
|
|
39
|
-
| `reportflow://server-info` | サーバー提供機能・対応ワークフローの概観 |
|
|
40
|
-
|
|
41
|
-
### Sampling
|
|
42
|
-
|
|
43
|
-
`suggest_params` ツールは `sampling/createMessage` を使い、**サーバー側 API キーを持たずにクライアント AI に作業を委譲**します。スキーマを入手した上で自然文の要件を params JSON に整形し、解釈不可なら一回だけ自己修正します。Sampling 未対応クライアント (stdio 単体を読んでいる補助ツール等) では当該ツールはエラーとなります。
|
|
44
|
-
|
|
45
|
-
### Roots
|
|
46
|
-
|
|
47
|
-
`generate_pdf_sync` / `generate_pdfs_sync` で `outputDir` 未指定時、クライアントが提示するワークスペース (Roots) の最初の `file://` を outputDir として使用します。VS Code ・ Claude Desktop から接続したときはそのワークスペース直下に出力されます。Roots 未対応クライアント・取得失敗時は OS 一時ディレクトリ (`<tmp>/reportflow`) にフォールバックします。
|
|
48
|
-
|
|
49
|
-
---
|
|
50
|
-
|
|
51
|
-
## 認証方式
|
|
52
|
-
|
|
53
|
-
OAuth2 **authorization_code + PKCE (S256)** Public client。シークレット (`client_secret`) は使用しません。
|
|
54
|
-
|
|
55
|
-
- 公式 OAuth client (`reportflow-mcp`) は ReportFlow 側で配布済み — **ユーザー側で発行作業は不要**
|
|
56
|
-
- MCP は `authenticate` ツール起動でブラウザを開き、ログイン → ワークスペース選択 → consent → JWT 取得 → ローカル保存
|
|
57
|
-
- consent 画面で毎回ワークスペースを選択 → 同じインストールで複数ワークスペース横断で利用可能
|
|
58
|
-
- 取得 JWT は OS の **Keychain** (macOS Keychain / Windows Credential Manager / Linux libsecret) に優先保存。失敗時は XDG file (chmod 0600) にフォールバック
|
|
59
|
-
- access_token 失効時は refresh_token で自動更新
|
|
60
|
-
|
|
61
|
-
---
|
|
62
|
-
|
|
63
|
-
## セットアップ
|
|
64
|
-
|
|
65
|
-
### 1. Claude Code (`.mcp.json`)
|
|
66
|
-
|
|
67
|
-
プロジェクトの `.mcp.json` に以下を追加するだけ:
|
|
19
|
+
Add the following to your config file (`.mcp.json`, `claude_desktop_config.json`, `~/.cursor/mcp.json`, etc.):
|
|
68
20
|
|
|
69
21
|
```json
|
|
70
22
|
{
|
|
@@ -77,148 +29,95 @@ OAuth2 **authorization_code + PKCE (S256)** Public client。シークレット (
|
|
|
77
29
|
}
|
|
78
30
|
```
|
|
79
31
|
|
|
80
|
-
env
|
|
32
|
+
That's the whole setup. No env vars, no API keys, no secrets to manage.
|
|
81
33
|
|
|
82
|
-
###
|
|
34
|
+
### VS Code (MCP-enabled builds)
|
|
83
35
|
|
|
84
|
-
|
|
36
|
+
Same JSON in `.vscode/mcp.json`.
|
|
85
37
|
|
|
86
|
-
###
|
|
38
|
+
### Requirements
|
|
87
39
|
|
|
88
|
-
|
|
40
|
+
- Node.js 18+ (auto-fetched by `npx`)
|
|
41
|
+
- A local environment with a browser (only required during the first login)
|
|
42
|
+
- A [ReportFlow](https://re-port-flow.com) account
|
|
89
43
|
|
|
90
|
-
|
|
91
|
-
ReportFlow で認証して
|
|
92
|
-
```
|
|
44
|
+
## Usage
|
|
93
45
|
|
|
94
|
-
|
|
95
|
-
以後はトークンが期限切れになるまで他のツール (list_templates 等) を使えます。期限切れは自動 refresh、refresh も失敗したら `authenticate` を再実行してください。
|
|
46
|
+
### 1. First-run authentication
|
|
96
47
|
|
|
97
|
-
|
|
48
|
+
After reloading the MCP client, ask the AI:
|
|
98
49
|
|
|
99
|
-
|
|
50
|
+
> Authenticate with ReportFlow
|
|
100
51
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
| `REPORTFLOW_CLIENT_ID` | 任意 | `reportflow-mcp` | 公式 client_id を上書きする場合のみ |
|
|
104
|
-
| `REPORTFLOW_API_BASE_URL` | 任意 | `https://api.re-port-flow.com` | Content Service の URL (staging/local で上書き) |
|
|
105
|
-
| `REPORTFLOW_AUTH_URL` | 任意 | `https://re-port-flow.com/api/v1` | ReportFlow OAuth2 サーバーのベース URL (staging/local で上書き) |
|
|
106
|
-
| `REPORTFLOW_CALLBACK_PORT` | 任意 | `53682` | ローカルコールバックサーバーのポート (redirect_uri と一致必須) |
|
|
107
|
-
| `REPORTFLOW_SCOPE` | 任意 | `openid profile designs:read designs:write templates:read templates:write pdf:generate` | 要求スコープ (空白区切り) |
|
|
108
|
-
| `REPORTFLOW_TOKEN_STORE` | 任意 | 自動 (keychain → file) | `keychain` / `file` 強制指定 |
|
|
109
|
-
| `REPORTFLOW_TOKEN_STORE_PATH` | 任意 | `$XDG_STATE_HOME/reportflow-mcp` | file モード時の保存ディレクトリ |
|
|
52
|
+
A browser window opens. **Sign in → pick a workspace → consent**, and you're done.
|
|
53
|
+
Tokens are stored in your OS keychain (macOS Keychain / Windows Credential Manager / Linux libsecret) and refreshed automatically.
|
|
110
54
|
|
|
111
|
-
|
|
55
|
+
### 2. Generate a PDF
|
|
112
56
|
|
|
113
|
-
|
|
57
|
+
#### Natural language (easiest)
|
|
114
58
|
|
|
115
|
-
|
|
59
|
+
> Using the invoice template, create a PDF for Acme Corp totalling $330.
|
|
116
60
|
|
|
117
|
-
|
|
118
|
-
0. authenticate → 初回のみ。ブラウザでログイン・workspace 選択
|
|
119
|
-
1. list_templates → designId 一覧を確認
|
|
120
|
-
2. get_design_parameters → designId でパラメータ構造を確認
|
|
121
|
-
3. generate_pdf_sync → パラメータを埋めて PDF を即時生成
|
|
122
|
-
```
|
|
61
|
+
The AI will look up the template via `list_templates`, fetch its parameter schema with `get_design_parameters`, fill in the values, and call `generate_pdf_sync` — returning a local file path.
|
|
123
62
|
|
|
124
|
-
|
|
63
|
+
#### Slash commands
|
|
125
64
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
65
|
+
| Command | Purpose |
|
|
66
|
+
|---|---|
|
|
67
|
+
| `/generate_pdf` | Step-by-step recipe for a single PDF |
|
|
68
|
+
| `/generate_pdfs` | Recipe for batch PDF generation |
|
|
69
|
+
| `/reportflow_help` | Quick feature tour |
|
|
131
70
|
|
|
132
|
-
|
|
133
|
-
suggest_params ツールを呼び、返った params を generate_pdf_sync に渡して
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
### 2. 非同期生成(大量ファイル向け)
|
|
137
|
-
|
|
138
|
-
```
|
|
139
|
-
0. authenticate → 初回のみ
|
|
140
|
-
1. list_templates → designId 一覧を確認
|
|
141
|
-
2. get_design_parameters → パラメータ構造を確認
|
|
142
|
-
3. generate_pdfs_async → 複数件を非同期生成
|
|
143
|
-
4. download_zip → requestId で ZIP をダウンロード
|
|
144
|
-
```
|
|
71
|
+
### 3. Where files are saved
|
|
145
72
|
|
|
146
|
-
|
|
73
|
+
Output location is resolved in this order:
|
|
147
74
|
|
|
148
|
-
|
|
75
|
+
1. Explicit instruction from the user (e.g. *"save to my Desktop"*)
|
|
76
|
+
2. The currently-open workspace root (Claude Code / Cursor / VS Code)
|
|
77
|
+
3. The OS temp directory as fallback
|
|
149
78
|
|
|
150
|
-
|
|
151
|
-
2. クライアントが Roots を提示 (VS Code / Claude Desktop のワークスペース等) → そのパス
|
|
152
|
-
3. いずれもない → OS 一時ディレクトリ (`<tmp>/reportflow`)
|
|
79
|
+
## Reference
|
|
153
80
|
|
|
154
|
-
|
|
81
|
+
### Tools (called by the AI)
|
|
155
82
|
|
|
156
|
-
|
|
83
|
+
| Tool | Purpose |
|
|
84
|
+
|---|---|
|
|
85
|
+
| `authenticate` | First-time / re-authentication |
|
|
86
|
+
| `list_templates` | List available designs |
|
|
87
|
+
| `get_design_parameters` | Fetch the parameter schema for a design |
|
|
88
|
+
| `generate_pdf_sync` / `_async` | Generate one PDF (sync returns path; async returns request ID) |
|
|
89
|
+
| `generate_pdfs_sync` / `_async` | Generate many PDFs (returns a ZIP) |
|
|
90
|
+
| `download_file` / `download_zip` | Download artifacts produced by async tools |
|
|
91
|
+
| `suggest_params` | Translate a natural-language brief into a `params` JSON via MCP Sampling (requires a Sampling-capable client) |
|
|
157
92
|
|
|
158
|
-
|
|
93
|
+
### Resources (attachable as AI context)
|
|
159
94
|
|
|
160
|
-
|
|
95
|
+
| URI | Contents |
|
|
96
|
+
|---|---|
|
|
97
|
+
| `reportflow://designs` | List of available designs |
|
|
98
|
+
| `reportflow://designs/{designId}/parameters` | Parameter schema for one design |
|
|
99
|
+
| `reportflow://errors` | Catalog of error messages from the Content Service |
|
|
100
|
+
| `reportflow://server-info` | Server feature overview |
|
|
161
101
|
|
|
162
|
-
|
|
163
|
-
## ReportFlow MCP 帳票生成
|
|
102
|
+
### Prompts (slash-command recipe cards)
|
|
164
103
|
|
|
165
|
-
|
|
104
|
+
`/generate_pdf`, `/generate_pdfs`, `/reportflow_help` — pass arguments and the AI follows the prepared workflow.
|
|
166
105
|
|
|
167
|
-
|
|
168
|
-
|--------|------|
|
|
169
|
-
| `authenticate` | 初回認証 / 再認証 (他のツールが認証エラーを出したら最初に呼ぶ) |
|
|
170
|
-
| `list_templates` | デザイン一覧取得(designId の確認に使う) |
|
|
171
|
-
| `get_design_parameters` | 指定デザインの必要パラメータ構造を取得 |
|
|
172
|
-
| `generate_pdf_sync` | 単一 PDF を即時生成 → ローカルパスを返す |
|
|
173
|
-
| `generate_pdf_async` | 単一 PDF を非同期生成 → requestId + fileId を返す |
|
|
174
|
-
| `generate_pdfs_sync` | 複数 PDF を一括即時生成 → ZIP パスを返す |
|
|
175
|
-
| `generate_pdfs_async` | 複数 PDF を一括非同期生成 → requestId を返す |
|
|
176
|
-
| `download_file` | requestId + fileId でファイルをダウンロード |
|
|
177
|
-
| `download_zip` | requestId で ZIP をダウンロード |
|
|
178
|
-
| `suggest_params` | 自然文要件 + スキーマから params JSON を Sampling で生成 |
|
|
106
|
+
## Troubleshooting
|
|
179
107
|
|
|
180
|
-
|
|
108
|
+
| Symptom | Fix |
|
|
109
|
+
|---|---|
|
|
110
|
+
| Error containing `re-authentication required` | Ask the AI: *"re-authenticate with ReportFlow"* |
|
|
111
|
+
| `npx` cannot find the package | `npm cache clean --force` then retry |
|
|
112
|
+
| No keychain available on Linux | Falls back automatically to a chmod-0600 file under `$XDG_STATE_HOME/reportflow-mcp/` |
|
|
113
|
+
| Browser cannot open over SSH / remote shell | Authenticate **once on a local machine**; afterwards the cached token works on remote hosts |
|
|
181
114
|
|
|
182
|
-
|
|
183
|
-
2. `list_templates` でデザイン一覧を取得し、目的の `id`(designId)を確認
|
|
184
|
-
3. `get_design_parameters` で `designId` と `version`(latestVersion)を指定してパラメータ構造を確認
|
|
185
|
-
4. パラメータを埋めて `generate_pdf_sync` で PDF を生成
|
|
115
|
+
## License
|
|
186
116
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
### Resources の活用
|
|
190
|
-
|
|
191
|
-
- `reportflow://designs` や `reportflow://designs/{designId}/parameters` を Resource としてコンテキストに添付すれば、ツール呼び出しを加えずにテンプレを参照できます。
|
|
192
|
-
- エラー判別に迷ったときは `reportflow://errors` を見るとメッセージカタログがあります。
|
|
193
|
-
|
|
194
|
-
### 注意事項
|
|
195
|
-
|
|
196
|
-
- 認証エラー (`再認証が必要です` を含むメッセージ) が出たら、まず `authenticate` を呼ぶこと
|
|
197
|
-
- `params` の型は `get_design_parameters` の結果に従うこと
|
|
198
|
-
- `"string"` → 文字列、`"number"` → 数値、`"date"` → "YYYY-MM-DD" 形式
|
|
199
|
-
- 配列型(`[{...}]`)はオブジェクトの配列を渡す
|
|
200
|
-
- `version` は `list_templates` で返る `latestVersion` を使用
|
|
201
|
-
- 同期生成(sync)は即座にファイルパスが返る。件数が多い場合は async を使うこと
|
|
202
|
-
````
|
|
203
|
-
|
|
204
|
-
---
|
|
205
|
-
|
|
206
|
-
## 開発
|
|
207
|
-
|
|
208
|
-
```bash
|
|
209
|
-
yarn install
|
|
210
|
-
yarn test # ユニットテスト実行
|
|
211
|
-
yarn build # TypeScript ビルド
|
|
212
|
-
yarn lint # ESLint チェック
|
|
213
|
-
```
|
|
117
|
+
MIT — see [LICENSE](./LICENSE).
|
|
214
118
|
|
|
215
|
-
|
|
119
|
+
## Links
|
|
216
120
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
4. ユーザーがログイン → ワークスペース選択 → 同意 → callback に code 飛ぶ
|
|
221
|
-
5. `<AUTH_URL>/oauth/token` (POST, `grant_type=authorization_code`) で code + code_verifier を送り JWT 取得 (Public client: client_secret なし)
|
|
222
|
-
6. JWT を keychain (or XDG file) に保存。`account = client_id`、`service = reportflow-mcp`
|
|
223
|
-
7. 以後の API 呼び出しは `Authorization: Bearer <jwt>` ヘッダ
|
|
224
|
-
8. `expires_in` 経過時は refresh_token で自動更新
|
|
121
|
+
- ReportFlow: https://re-port-flow.com
|
|
122
|
+
- npm: https://www.npmjs.com/package/reportflow-mcp
|
|
123
|
+
- Issues: https://github.com/re-port-flow/reportflow-mcp/issues
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP モード専用: per-request の Bearer access token を tools 層へ伝搬する。
|
|
3
|
+
* stdio モードでは利用しない (OS keychain 経路をそのまま使う)。
|
|
4
|
+
*/
|
|
5
|
+
export type HttpAuthContext = {
|
|
6
|
+
accessToken: string;
|
|
7
|
+
};
|
|
8
|
+
export declare const runWithHttpAuth: <T>(ctx: HttpAuthContext, fn: () => Promise<T>) => Promise<T>;
|
|
9
|
+
export declare const getHttpAuthContext: () => HttpAuthContext | undefined;
|
|
10
|
+
//# sourceMappingURL=auth-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-context.d.ts","sourceRoot":"","sources":["../src/auth-context.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAIF,eAAO,MAAM,eAAe,GAAI,CAAC,EAC/B,KAAK,eAAe,EACpB,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC,KACnB,OAAO,CAAC,CAAC,CAAyB,CAAC;AAEtC,eAAO,MAAM,kBAAkB,QAAO,eAAe,GAAG,SACpC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getHttpAuthContext = exports.runWithHttpAuth = void 0;
|
|
4
|
+
const async_hooks_1 = require("async_hooks");
|
|
5
|
+
const storage = new async_hooks_1.AsyncLocalStorage();
|
|
6
|
+
const runWithHttpAuth = (ctx, fn) => storage.run(ctx, fn);
|
|
7
|
+
exports.runWithHttpAuth = runWithHttpAuth;
|
|
8
|
+
const getHttpAuthContext = () => storage.getStore();
|
|
9
|
+
exports.getHttpAuthContext = getHttpAuthContext;
|
|
10
|
+
//# sourceMappingURL=auth-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-context.js","sourceRoot":"","sources":["../src/auth-context.ts"],"names":[],"mappings":";;;AAAA,6CAAgD;AAUhD,MAAM,OAAO,GAAG,IAAI,+BAAiB,EAAmB,CAAC;AAElD,MAAM,eAAe,GAAG,CAC7B,GAAoB,EACpB,EAAoB,EACR,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAHzB,QAAA,eAAe,mBAGU;AAE/B,MAAM,kBAAkB,GAAG,GAAgC,EAAE,CAClE,OAAO,CAAC,QAAQ,EAAE,CAAC;AADR,QAAA,kBAAkB,sBACV"}
|
package/dist/auth.d.ts
CHANGED
package/dist/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAsCA,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,OAAO,GAAG,MAAgB;CAY9D;AA+GD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,SAAS,GACpB,UAAS,gBAAqB,KAC7B,OAAO,CAAC,eAAe,CAoCzB,CAAC;AAsBF,eAAO,MAAM,cAAc,QAAa,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQrE,CAAC;AAEF,eAAO,MAAM,eAAe,GAAU,CAAC,EACrC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,KAClD,OAAO,CAAC,CAAC,CAqCX,CAAC;AAEF,eAAO,MAAM,SAAS,QAAa,OAAO,CAAC,IAAI,CAI9C,CAAC"}
|
package/dist/auth.js
CHANGED
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.clearAuth = exports.requestWithAuth = exports.getAuthHeaders = exports.authorize = exports.AuthRequiredError = void 0;
|
|
7
7
|
const open_1 = __importDefault(require("open"));
|
|
8
8
|
const auth_server_js_1 = require("./auth-server.js");
|
|
9
|
+
const auth_context_js_1 = require("./auth-context.js");
|
|
9
10
|
const http_js_1 = require("./http.js");
|
|
10
11
|
const pkce_js_1 = require("./pkce.js");
|
|
11
12
|
const index_js_1 = require("./token-store/index.js");
|
|
@@ -17,10 +18,13 @@ const DEFAULT_SCOPE = 'openid profile designs:read designs:write templates:read
|
|
|
17
18
|
const DEFAULT_CALLBACK_PORT = 53682;
|
|
18
19
|
const TOKEN_EXPIRY_BUFFER_MS = 60_000;
|
|
19
20
|
class AuthRequiredError extends Error {
|
|
20
|
-
constructor(detail) {
|
|
21
|
+
constructor(detail, mode = 'stdio') {
|
|
22
|
+
const action = mode === 'http'
|
|
23
|
+
? 'クライアント側で OAuth トークンを再取得してください (claude.ai / n8n / Make 等の OAuth 設定を確認)'
|
|
24
|
+
: 'authenticate ツールを呼び出してください';
|
|
21
25
|
super(detail
|
|
22
|
-
? `再認証が必要です: ${detail}
|
|
23
|
-
:
|
|
26
|
+
? `再認証が必要です: ${detail}。${action}。`
|
|
27
|
+
: `再認証が必要です。${action}。`);
|
|
24
28
|
this.name = 'AuthRequiredError';
|
|
25
29
|
}
|
|
26
30
|
}
|
|
@@ -161,12 +165,32 @@ const loadOrRefresh = async () => {
|
|
|
161
165
|
return tokens;
|
|
162
166
|
};
|
|
163
167
|
const getAuthHeaders = async () => {
|
|
168
|
+
// HTTP モード: AsyncLocalStorage に積まれた per-request token を優先利用する
|
|
169
|
+
const httpCtx = (0, auth_context_js_1.getHttpAuthContext)();
|
|
170
|
+
if (httpCtx) {
|
|
171
|
+
return { Authorization: `Bearer ${httpCtx.accessToken}` };
|
|
172
|
+
}
|
|
164
173
|
const tokens = await loadOrRefresh();
|
|
165
174
|
return { Authorization: `Bearer ${tokens.accessToken}` };
|
|
166
175
|
};
|
|
167
176
|
exports.getAuthHeaders = getAuthHeaders;
|
|
168
177
|
const requestWithAuth = async (fn) => {
|
|
169
178
|
const headers = await (0, exports.getAuthHeaders)();
|
|
179
|
+
// HTTP モードでは refresh は claude.ai 等の外部クライアントが担うため、
|
|
180
|
+
// 401 を受けた場合はそのまま AuthRequiredError として上位に返す。
|
|
181
|
+
const httpCtx = (0, auth_context_js_1.getHttpAuthContext)();
|
|
182
|
+
if (httpCtx) {
|
|
183
|
+
try {
|
|
184
|
+
return await fn(headers);
|
|
185
|
+
}
|
|
186
|
+
catch (err) {
|
|
187
|
+
if (err instanceof http_js_1.HttpError && err.status === 401) {
|
|
188
|
+
throw new AuthRequiredError('上流 API が 401', 'http');
|
|
189
|
+
}
|
|
190
|
+
throw err;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
// stdio モード: 既存の OS keychain 経路 + ローカル refresh 再試行
|
|
170
194
|
try {
|
|
171
195
|
return await fn(headers);
|
|
172
196
|
}
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,qDAAuD;AACvD,uCAAiD;AACjD,uCAImB;AACnB,qDAAoE;AAEpE,MAAM,gBAAgB,GAAG,iCAAiC,CAAC;AAC3D,yEAAyE;AACzE,oCAAoC;AACpC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAC3C,MAAM,aAAa,GACjB,uFAAuF,CAAC;AAC1F,MAAM,qBAAqB,GAAG,KAAK,CAAC;AACpC,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAoBtC,MAAa,iBAAkB,SAAQ,KAAK;IAC1C,YAAY,MAAe;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -1,14 +1,29 @@
|
|
|
1
1
|
export type DesignParameter = string | Record<string, string> | Array<Record<string, string>>;
|
|
2
2
|
export type GetDesignParametersResponse = Record<string, DesignParameter>;
|
|
3
3
|
export type ContentParam = Record<string, unknown>;
|
|
4
|
+
/**
|
|
5
|
+
* 共有タイプ (リクエスト側): 数値コード。
|
|
6
|
+
* - '01' = ワークスペース内共有 (デフォルト)
|
|
7
|
+
* - '02' = 招待者共有
|
|
8
|
+
* - '03' = 公開URL共有
|
|
9
|
+
*
|
|
10
|
+
* 参照: developer-docs/openapi/content-service.yaml shareType (request)
|
|
11
|
+
*/
|
|
12
|
+
export type ShareTypeCode = '01' | '02' | '03';
|
|
13
|
+
/**
|
|
14
|
+
* 共有タイプ (レスポンス側): 人間可読な名前で返ってくる。
|
|
15
|
+
*
|
|
16
|
+
* 参照: developer-docs/openapi/content-service.yaml shareType (response)
|
|
17
|
+
*/
|
|
18
|
+
export type ShareTypeName = 'workspace' | 'invited' | 'public';
|
|
4
19
|
export type ContentDto = {
|
|
5
20
|
fileName: string;
|
|
6
|
-
shareType?:
|
|
21
|
+
shareType?: ShareTypeCode;
|
|
7
22
|
passcodeEnabled?: boolean;
|
|
8
23
|
params: ContentParam;
|
|
9
24
|
};
|
|
10
25
|
export type ShareInfo = {
|
|
11
|
-
shareType:
|
|
26
|
+
shareType: ShareTypeName;
|
|
12
27
|
passcodeEnabled: boolean;
|
|
13
28
|
};
|
|
14
29
|
export type FileItem = {
|
|
@@ -33,12 +48,37 @@ export type DesignListResponse = {
|
|
|
33
48
|
designs: DesignItem[];
|
|
34
49
|
};
|
|
35
50
|
export declare const getDesignParameters: (designId: string, version?: number) => Promise<GetDesignParametersResponse>;
|
|
51
|
+
/**
|
|
52
|
+
* generate_pdf_sync の結果。
|
|
53
|
+
* - data : PDF バイト列 (EmbeddedResource 用)
|
|
54
|
+
* - filePath: stdio モードで saveTempFile した場合の絶対パス。HTTP モードでは undefined。
|
|
55
|
+
* - fileUrl : content-service の sync エンドポイントが返す `File-URL` ヘッダー。
|
|
56
|
+
* ワークスペースのダウンロードエンドポイント URL (`{base}/file/download/{requestId}`)。
|
|
57
|
+
* - requestId: 同 `Request-Id` ヘッダー。
|
|
58
|
+
* - fileId : 同 `X-File-Mapping` ヘッダー (URL encoded JSON 配列) の最初の要素の fileId。
|
|
59
|
+
*
|
|
60
|
+
* 参照: developer-docs/openapi/content-service.yaml
|
|
61
|
+
* /v1/file/sync/single → 200 ヘッダー (File-URL / Request-Id / X-File-Mapping)
|
|
62
|
+
*/
|
|
63
|
+
export type GeneratePdfSyncResult = {
|
|
64
|
+
data: ArrayBuffer;
|
|
65
|
+
filePath?: string;
|
|
66
|
+
fileUrl?: string;
|
|
67
|
+
requestId?: string;
|
|
68
|
+
fileId?: string;
|
|
69
|
+
};
|
|
36
70
|
export declare const generatePdfSync: (body: {
|
|
37
71
|
designId: string;
|
|
38
72
|
version: number;
|
|
39
73
|
content: ContentDto;
|
|
74
|
+
/**
|
|
75
|
+
* 指定された場合のみ saveTempFile してパスを返す (stdio モード用)。
|
|
76
|
+
* HTTP モードでは未指定にする — サーバ filesystem に書いてもクライアント不可達。
|
|
77
|
+
*/
|
|
40
78
|
outputDir?: string;
|
|
41
|
-
|
|
79
|
+
/** true なら outputDir 指定の有無に関わらず保存しない (HTTP モード) */
|
|
80
|
+
skipSave?: boolean;
|
|
81
|
+
}) => Promise<GeneratePdfSyncResult>;
|
|
42
82
|
export declare const generatePdfAsync: (body: {
|
|
43
83
|
designId: string;
|
|
44
84
|
version: number;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -3,8 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.listDesigns = exports.downloadZip = exports.downloadFile = exports.generatePdfsAsync = exports.generatePdfsSync = exports.generatePdfAsync = exports.generatePdfSync = exports.getDesignParameters = void 0;
|
|
4
4
|
const http_js_1 = require("./http.js");
|
|
5
5
|
const auth_js_1 = require("./auth.js");
|
|
6
|
+
const config_js_1 = require("./config.js");
|
|
6
7
|
const file_helper_js_1 = require("./file-helper.js");
|
|
7
|
-
|
|
8
|
+
// HTTP モード (claude.ai 等のリモート接続) では config.ts の固定 URL を使う。
|
|
9
|
+
// stdio モードでは従来通り REPORTFLOW_API_BASE_URL env override も許容する。
|
|
10
|
+
const getBaseUrl = () => process.env['REPORTFLOW_API_BASE_URL'] ?? config_js_1.REPORTFLOW_API_BASE_URL;
|
|
8
11
|
// ─── Content Service API ──────────────────────────────────────────────────────
|
|
9
12
|
const getDesignParameters = async (designId, version) => {
|
|
10
13
|
const url = new URL(`/v1/file/design/parameter/${designId}`, getBaseUrl());
|
|
@@ -16,15 +19,38 @@ const getDesignParameters = async (designId, version) => {
|
|
|
16
19
|
}));
|
|
17
20
|
};
|
|
18
21
|
exports.getDesignParameters = getDesignParameters;
|
|
22
|
+
/**
|
|
23
|
+
* sync エンドポイントが返す `X-File-Mapping` ヘッダー (URL encoded JSON 配列) を
|
|
24
|
+
* パースして配列を返す。失敗時は空配列。
|
|
25
|
+
*/
|
|
26
|
+
const parseFileMapping = (raw) => {
|
|
27
|
+
if (!raw)
|
|
28
|
+
return [];
|
|
29
|
+
try {
|
|
30
|
+
const decoded = decodeURIComponent(raw);
|
|
31
|
+
const parsed = JSON.parse(decoded);
|
|
32
|
+
return Array.isArray(parsed) ? parsed : [];
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return [];
|
|
36
|
+
}
|
|
37
|
+
};
|
|
19
38
|
const generatePdfSync = async (body) => {
|
|
20
39
|
const url = new URL('/v1/file/sync/single', getBaseUrl());
|
|
21
|
-
const { outputDir, ...payload } = body;
|
|
22
|
-
const data = await (0, auth_js_1.requestWithAuth)((headers) => (0, http_js_1.
|
|
40
|
+
const { outputDir, skipSave, ...payload } = body;
|
|
41
|
+
const { data, headers } = await (0, auth_js_1.requestWithAuth)((headers) => (0, http_js_1.fetchBinaryWithHeaders)(url.toString(), {
|
|
23
42
|
method: 'POST',
|
|
24
43
|
headers: { ...headers, 'Content-Type': 'application/json' },
|
|
25
44
|
body: JSON.stringify(payload),
|
|
26
45
|
}));
|
|
27
|
-
|
|
46
|
+
const fileUrl = headers.get('File-URL') ?? undefined;
|
|
47
|
+
const requestId = headers.get('Request-Id') ?? undefined;
|
|
48
|
+
const fileId = parseFileMapping(headers.get('X-File-Mapping'))[0]?.fileId;
|
|
49
|
+
if (skipSave) {
|
|
50
|
+
return { data, fileUrl, requestId, fileId };
|
|
51
|
+
}
|
|
52
|
+
const filePath = await (0, file_helper_js_1.saveTempFile)(data, body.content.fileName, outputDir);
|
|
53
|
+
return { data, filePath, fileUrl, requestId, fileId };
|
|
28
54
|
};
|
|
29
55
|
exports.generatePdfSync = generatePdfSync;
|
|
30
56
|
const generatePdfAsync = async (body) => {
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 環境別の固定 URL 定数。
|
|
3
|
+
* `NODE_ENV=staging` のときだけステージング、それ以外は本番扱い。
|
|
4
|
+
* stdio 版 (npx で起動、NODE_ENV 未設定) が誤ってステージングを引かないよう、
|
|
5
|
+
* staging を opt-in 方式にしている。HTTP モードでは NODE_ENV 環境変数で動作を切り替える。
|
|
6
|
+
* 値は外部 env から差し替え不可。
|
|
7
|
+
*/
|
|
8
|
+
type Stage = 'prod' | 'stg';
|
|
9
|
+
export declare const REPORTFLOW_API_BASE_URL: "https://api.re-port-flow.com" | "https://api.stg.re-port-flow.com";
|
|
10
|
+
export declare const MCP_RESOURCE_URL: "https://mcp.re-port-flow.com" | "https://mcp.stg.re-port-flow.com";
|
|
11
|
+
/**
|
|
12
|
+
* OAuth Authorization Server (reposts-api) の issuer URL。
|
|
13
|
+
* /oauth/authorize, /oauth/token, /.well-known/* の prefix として使う。
|
|
14
|
+
* content-service (api.{stg.}re-port-flow.com) とは別 host のため分離。
|
|
15
|
+
*/
|
|
16
|
+
export declare const REPORTFLOW_OAUTH_ISSUER_URL: "https://re-port-flow.com/api/v1" | "https://stg.re-port-flow.com/api/v1";
|
|
17
|
+
export declare const RUNTIME_STAGE: Stage;
|
|
18
|
+
/** AS metadata (RFC 8414) と PRM (RFC 9728) で広告するサポート scope。 */
|
|
19
|
+
export declare const SUPPORTED_SCOPES: readonly ["openid", "profile", "designs:read", "designs:write", "templates:read", "templates:write", "pdf:generate"];
|
|
20
|
+
/** OAuth 2.0 Protected Resource Metadata (RFC 9728) のレスポンスを生成する */
|
|
21
|
+
export declare const buildProtectedResourceMetadata: () => Record<string, unknown>;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,KAAK,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;AAmB5B,eAAO,MAAM,uBAAuB,qEAAkB,CAAC;AACvD,eAAO,MAAM,gBAAgB,qEAAkB,CAAC;AAChD;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,2EAA0B,CAAC;AACnE,eAAO,MAAM,aAAa,EAAE,KAAa,CAAC;AAE1C,+DAA+D;AAC/D,eAAO,MAAM,gBAAgB,sHAQnB,CAAC;AAEX,mEAAmE;AACnE,eAAO,MAAM,8BAA8B,QAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CActE,CAAC"}
|