@shibayama/pdgkit 0.1.1 → 0.1.2
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 +50 -49
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/pdgkit-mcp.cjs +2 -2
- package/dist/pdgkit-mcp.js +2 -2
- package/dist/pdgkit.cjs +1 -1
- package/dist/pdgkit.global.js +1 -1
- package/dist/pdgkit.js +1 -1
- package/docs/ai-authoring-guide.md +5 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -124,80 +124,98 @@ pdgkit の主な使い方は、AI に日本語で頼んで図を作らせるこ
|
|
|
124
124
|
|
|
125
125
|
### AI に自然文で頼む
|
|
126
126
|
|
|
127
|
-
|
|
127
|
+
pdgkit の主な使い方は、AI に日本語で頼んで図を作らせることです。**コードを実行できる AI**(ChatGPT のコードインタープリタ、Claude Code / Codex などのエージェント)なら、導入から図のファイル生成まで会話内で完結します。確実なのは次の 2 通りです。
|
|
128
128
|
|
|
129
|
-
|
|
129
|
+
- **明示手順プロンプト(下記・推奨)** — 1 つのプロンプトに「pdgkit を使う手順」と「発明」をまとめて渡す。AI が自前で図を描いてしまうのを防げます。
|
|
130
|
+
- **MCP 登録** — [MCP サーバとして](#mcp-サーバとして) を一度登録すれば、以降どの会話でも「〜を描いて」と頼むだけで pdgkit が呼ばれます(対応クライアント限定)。
|
|
130
131
|
|
|
131
|
-
|
|
132
|
-
- **Claude Code / Codex** などのコーディングエージェント
|
|
133
|
-
- pdgkit を登録した **Claude(MCP)** … この場合はセットアップ不要。[MCP サーバとして](#mcp-サーバとして) を参照
|
|
132
|
+
> **注意**: 「図を描いて」とだけ頼むと、AI は pdgkit を使わず**自前で図を生成してしまう**ことがあります(特に ChatGPT のコードインタープリタ)。「pdgkit を使う」ことをプロンプトに含めると確実です。コードを実行できない素のチャットでの使い方は「[C. コードを実行できない素のチャット](#c-コードを実行できない素のチャット)」を参照してください。
|
|
134
133
|
|
|
135
|
-
|
|
134
|
+
#### 明示手順プロンプト(推奨)
|
|
136
135
|
|
|
137
|
-
|
|
136
|
+
次のテンプレの「発明」だけを、図にしたい内容に差し替えて貼り付けます。
|
|
138
137
|
|
|
139
|
-
|
|
138
|
+
```text
|
|
139
|
+
pdgkit を使って特許図面を描いてください。自分で図を描かず、必ず下のコマンドを実行して、pdgkit が出力したファイルを返してください。
|
|
140
|
+
|
|
141
|
+
1. npm install @shibayama/pdgkit
|
|
142
|
+
2. npx @shibayama/pdgkit guide を実行し、表示された記法ガイドに従う
|
|
143
|
+
3. 下の発明について .pdg を書いて fig.pdg に保存する(図種は内容から最適なものを選ぶ。私が指定したらそれに従う)
|
|
144
|
+
4. npx @shibayama/pdgkit validate fig.pdg がエラーなしになるまで直す
|
|
145
|
+
5. npx @shibayama/pdgkit render fig.pdg -o fig.svg(PNG なら --to png、PDF なら --to pdf)で図を作り、ダウンロードできるようにする
|
|
146
|
+
|
|
147
|
+
発明:
|
|
148
|
+
撮像装置に関する。本装置は、被写体を撮像して画像信号を出力する撮像部と、
|
|
149
|
+
撮像部からの画像信号にノイズ低減とエッジ強調を行う画像処理部と、
|
|
150
|
+
画像処理部が処理した画像データを格納する記憶部と、
|
|
151
|
+
画像データを外部サーバへ送信する通信部と、これらを制御する制御部と、を備える。
|
|
152
|
+
画像は撮像部から画像処理部、画像処理部から記憶部の順に処理され、
|
|
153
|
+
記憶部の画像は制御部の指示で通信部を介して外部サーバへ送信される。
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
「発明」は、構成・方法・状態・やりとり・クレーム文など図にしたい内容に置き換えます(書き方は下の「頼み方の例」を参照)。図種を指定したいときは「フローチャートにして」などと一言添え、出力形式は手順 5 を `--to png` / `--to pdf` / `--to pptx`(編集可能版は `--to pptx --editable`)に変えます。
|
|
157
|
+
|
|
158
|
+
#### 一度セットアップして、続けて頼む(手軽版)
|
|
159
|
+
|
|
160
|
+
同じ会話で何枚も作るときは、最初に一度だけセットアップを頼み、以降は短い依頼を続けられます。ただし会話が長くなると AI が pdgkit を使うのを忘れて自前描画に戻ることがあります。そうなったら、上の明示手順プロンプトに切り替えてください。
|
|
161
|
+
|
|
162
|
+
最初に一度だけ、次を貼り付けます。
|
|
140
163
|
|
|
141
164
|
```text
|
|
142
|
-
|
|
165
|
+
これから特許図面を作ります。次の準備をして、以降のルールに従ってください。
|
|
143
166
|
1. npm install @shibayama/pdgkit を実行する。
|
|
144
167
|
2. npx @shibayama/pdgkit guide を実行し、表示された PatentDSL(.pdg)の記法に厳密に従う。
|
|
145
|
-
3.
|
|
146
|
-
npx @shibayama/pdgkit validate fig.pdg でエラーが無いことを確認してから、
|
|
147
|
-
npx @shibayama/pdgkit render fig.pdg(既定は SVG。指定があれば --to png / jpeg / pdf / pptx
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
内容から最適なものを選んで構いません。準備ができたら「準備完了」とだけ返してください。
|
|
168
|
+
3. 以降この会話では、私が図を頼んだら自分で図を描かず、必ず pdgkit を使うこと。
|
|
169
|
+
.pdg を書いて fig.pdg に保存し、npx @shibayama/pdgkit validate fig.pdg でエラーが無いことを確認してから、
|
|
170
|
+
npx @shibayama/pdgkit render fig.pdg(既定は SVG。指定があれば --to png / jpeg / pdf / pptx)で図のファイルを作り、
|
|
171
|
+
実行したコマンドを短く示して、私がダウンロードできるようにすること。
|
|
172
|
+
図種や出力形式は、私が指定しなければ内容から最適なものを選んで構いません。準備ができたら「準備完了」とだけ返してください。
|
|
151
173
|
```
|
|
152
174
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
#### ステップ 2: あとは日本語で頼むだけ
|
|
156
|
-
|
|
157
|
-
「準備完了」と返ってきたら、作りたい図を言葉で伝えるだけです。図種も出力形式も、指定しなければ AI が内容から選びます。下はそのまま使える依頼文の例です(コードボックス 1 つが 1 つの依頼。コピーして送ってください)。
|
|
175
|
+
「準備完了」と返ってきたら、作りたい図を伝えます。**各依頼の頭に「pdgkit で」と付ける**と、pdgkit 経由が確実になります(コードボックス 1 つが 1 つの依頼。コピーして送ってください)。
|
|
158
176
|
|
|
159
177
|
**構成・装置(ブロック図になりやすい)** — 何が何を含み、何がどこへ流れるかを書く:
|
|
160
178
|
|
|
161
179
|
```text
|
|
162
|
-
|
|
180
|
+
pdgkit で、制御装置の構成図を描いて。制御装置は CPU、メモリ、I/O インターフェースを内蔵し、I/O インターフェースが外部機器へ信号を送る。
|
|
163
181
|
```
|
|
164
182
|
|
|
165
183
|
```text
|
|
166
|
-
|
|
184
|
+
pdgkit で、センサ端末の構成図を描いて。検出部(温度センサと加速度センサ)、処理部(取得部と判定部)、通信部を備え、検出部から処理部、処理部から通信部の順にデータが流れ、通信部からゲートウェイへ無線送信する。日英併記で。
|
|
167
185
|
```
|
|
168
186
|
|
|
169
187
|
```text
|
|
170
|
-
|
|
188
|
+
pdgkit で、制御ループの図を描いて。制御システムは制御部・駆動部・センサ部・対象装置から成り、制御部が指令で駆動部を動かし、駆動部が対象装置を駆動し、センサ部が状態を検出して制御部へフィードバックする。
|
|
171
189
|
```
|
|
172
190
|
|
|
173
191
|
**処理・方法(フローチャートになりやすい)** — 手順と分岐・ループを書く:
|
|
174
192
|
|
|
175
193
|
```text
|
|
176
|
-
|
|
194
|
+
pdgkit で、検査方法のフローチャートを描いて。画像取得→前処理→特徴抽出→欠陥あり? と進み、欠陥ありなら警告出力、無しなら正常記録、いずれも終了へ。
|
|
177
195
|
```
|
|
178
196
|
|
|
179
197
|
```text
|
|
180
|
-
|
|
198
|
+
pdgkit で、ログイン処理のフローチャートを描いて。入力→認証成功? で分岐し、成功ならホーム画面へ、失敗なら入力へ戻って再試行する。
|
|
181
199
|
```
|
|
182
200
|
|
|
183
201
|
**状態・やりとり:**
|
|
184
202
|
|
|
185
203
|
```text
|
|
186
|
-
|
|
204
|
+
pdgkit で、装置の状態遷移図を描いて。待機・動作中・エラーの3状態があり、起動で動作中、停止で待機、異常でエラー、リセットで待機に戻る。
|
|
187
205
|
```
|
|
188
206
|
|
|
189
207
|
```text
|
|
190
|
-
|
|
208
|
+
pdgkit で、クライアントとサーバの、認証からリソース取得までのシーケンス図を描いて。認証要求→トークン応答→リソース要求→リソース応答の順。
|
|
191
209
|
```
|
|
192
210
|
|
|
193
211
|
**クレーム文からの変換** — クレーム本文をそのまま貼って図種を指定する:
|
|
194
212
|
|
|
195
213
|
```text
|
|
196
|
-
|
|
214
|
+
pdgkit で、次の装置クレームを構成図にして。「撮像部と、前記撮像部が取得した画像を処理する画像処理部と、処理結果を表示する表示部と、を備える撮像装置。」
|
|
197
215
|
```
|
|
198
216
|
|
|
199
217
|
```text
|
|
200
|
-
|
|
218
|
+
pdgkit で、次の方法クレームをフローチャートにして。「画像を取得するステップと、前記画像から特徴量を抽出するステップと、欠陥の有無を判定するステップと、欠陥が有る場合に警告を出力するステップと、を含む検査方法。」
|
|
201
219
|
```
|
|
202
220
|
|
|
203
221
|
**出力形式を指定したいとき** — 続けて一言頼むだけです(指定しなければ SVG):
|
|
@@ -208,7 +226,7 @@ pdgkit の主な使い方は、AI に日本語で頼んで図を作らせるこ
|
|
|
208
226
|
- 日英併記にする → 「日英併記で出して」
|
|
209
227
|
- 符号表(符号の説明)も出す → 「符号表も Markdown で出して」
|
|
210
228
|
|
|
211
|
-
>
|
|
229
|
+
> **AI が自分で図を描いてしまう**ときは、上の「明示手順プロンプト」に切り替えてください。図がうまく描けないときは、AI に「`npx @shibayama/pdgkit guide` をもう一度読んで、`npx @shibayama/pdgkit validate` のエラーが無くなるまで直して」と伝えます。PNG / PDF / PPTX は環境により失敗することがありますが、SVG は確実に出ます。
|
|
212
230
|
|
|
213
231
|
### ライブラリとして(Node / TypeScript)
|
|
214
232
|
|
|
@@ -266,26 +284,9 @@ pdgkit samples
|
|
|
266
284
|
|
|
267
285
|
#### A. コードを実行できるチャット(推奨)
|
|
268
286
|
|
|
269
|
-
ChatGPT のコードインタープリタは、2026 年初頭以降 Node.js と `npm install` に対応しています(一般的なネット接続はオフですが、パッケージのインストールは可能です)。このようなチャットでは、pdgkit を導入して図の生成・ダウンロードまでチャット内で完結できます。**記法ガイドはパッケージに同梱されているので、プロンプトに貼り付ける必要はありません**(`npx @shibayama/pdgkit guide` で読めます)。**図種(ブロック図など)も指定不要で、AI
|
|
270
|
-
|
|
271
|
-
```text
|
|
272
|
-
pdgkit を使って特許図面を描いてください。
|
|
273
|
-
|
|
274
|
-
1. npm install @shibayama/pdgkit
|
|
275
|
-
2. npx @shibayama/pdgkit guide を実行し、表示された記法ガイドに従う
|
|
276
|
-
3. 下の発明について .pdg を書いて fig.pdg に保存する(図種は内容から最適なものを選ぶ。私が指定したらそれに従う)
|
|
277
|
-
4. npx @shibayama/pdgkit validate fig.pdg がエラーなしになるまで直す
|
|
278
|
-
5. npx @shibayama/pdgkit render fig.pdg -o fig.svg(PNG なら --to png、PDF なら --to pdf)で図を作り、
|
|
279
|
-
ダウンロードできるようにする
|
|
287
|
+
ChatGPT のコードインタープリタは、2026 年初頭以降 Node.js と `npm install` に対応しています(一般的なネット接続はオフですが、パッケージのインストールは可能です)。このようなチャットでは、pdgkit を導入して図の生成・ダウンロードまでチャット内で完結できます。**記法ガイドはパッケージに同梱されているので、プロンプトに貼り付ける必要はありません**(`npx @shibayama/pdgkit guide` で読めます)。**図種(ブロック図など)も指定不要で、AI が発明内容から選びます**。
|
|
280
288
|
|
|
281
|
-
|
|
282
|
-
撮像装置に関する。本装置は、被写体を撮像して画像信号を出力する撮像部と、
|
|
283
|
-
撮像部からの画像信号にノイズ低減とエッジ強調を行う画像処理部と、
|
|
284
|
-
画像処理部が処理した画像データを格納する記憶部と、
|
|
285
|
-
画像データを外部サーバへ送信する通信部と、これらを制御する制御部と、を備える。
|
|
286
|
-
画像は撮像部から画像処理部、画像処理部から記憶部の順に処理され、
|
|
287
|
-
記憶部の画像は制御部の指示で通信部を介して外部サーバへ送信される。
|
|
288
|
-
```
|
|
289
|
+
依頼の仕方は、上の「[AI に自然文で頼む](#ai-に自然文で頼む)」の**明示手順プロンプト**をそのまま使ってください(「発明」だけ差し替え)。「図を描いて」とだけ頼むと AI が自前で図を生成してしまうことがあるため、pdgkit を使う手順を明示するこの形が確実です。
|
|
289
290
|
|
|
290
291
|
注: PNG / JPEG / PDF / PPTX はネイティブ依存(`@resvg/resvg-js`)などを使うため、コンテナ環境に依存します。確実に動くのは依存ゼロの SVG です。Node が使える環境なら全形式が動きます。
|
|
291
292
|
|
package/dist/index.cjs
CHANGED
|
@@ -3529,7 +3529,7 @@ async function renderToPptx(source, opts = {}) {
|
|
|
3529
3529
|
}
|
|
3530
3530
|
|
|
3531
3531
|
// src/node/index.ts
|
|
3532
|
-
var VERSION = "0.1.
|
|
3532
|
+
var VERSION = "0.1.2";
|
|
3533
3533
|
function toSvgString(source, lang = "ja") {
|
|
3534
3534
|
return renderToSvg(source, { lang }).svg;
|
|
3535
3535
|
}
|
package/dist/index.d.cts
CHANGED
|
@@ -147,7 +147,7 @@ declare function renderToPptx(source: string, opts?: PptxOptions): Promise<Uint8
|
|
|
147
147
|
/** pdgkit Node API — the browser-free rendering surface a host tool calls. */
|
|
148
148
|
|
|
149
149
|
/** The pdgkit package version. Keep in sync with package.json. */
|
|
150
|
-
declare const VERSION = "0.1.
|
|
150
|
+
declare const VERSION = "0.1.2";
|
|
151
151
|
/** Convenience: render to SVG and return just the string. */
|
|
152
152
|
declare function toSvgString(source: string, lang?: Lang): string;
|
|
153
153
|
/** Read the bundled AI authoring guide (docs/ai-authoring-guide.md) as a string, for injecting into an LLM's system prompt. */
|
package/dist/index.d.ts
CHANGED
|
@@ -147,7 +147,7 @@ declare function renderToPptx(source: string, opts?: PptxOptions): Promise<Uint8
|
|
|
147
147
|
/** pdgkit Node API — the browser-free rendering surface a host tool calls. */
|
|
148
148
|
|
|
149
149
|
/** The pdgkit package version. Keep in sync with package.json. */
|
|
150
|
-
declare const VERSION = "0.1.
|
|
150
|
+
declare const VERSION = "0.1.2";
|
|
151
151
|
/** Convenience: render to SVG and return just the string. */
|
|
152
152
|
declare function toSvgString(source: string, lang?: Lang): string;
|
|
153
153
|
/** Read the bundled AI authoring guide (docs/ai-authoring-guide.md) as a string, for injecting into an LLM's system prompt. */
|
package/dist/index.js
CHANGED
|
@@ -3466,7 +3466,7 @@ async function renderToPptx(source, opts = {}) {
|
|
|
3466
3466
|
}
|
|
3467
3467
|
|
|
3468
3468
|
// src/node/index.ts
|
|
3469
|
-
var VERSION = "0.1.
|
|
3469
|
+
var VERSION = "0.1.2";
|
|
3470
3470
|
function toSvgString(source, lang = "ja") {
|
|
3471
3471
|
return renderToSvg(source, { lang }).svg;
|
|
3472
3472
|
}
|
package/dist/pdgkit-mcp.cjs
CHANGED
|
@@ -3160,7 +3160,7 @@ var langSchema = import_zod.z.enum(["ja", "en", "both"]).default("ja");
|
|
|
3160
3160
|
function textResult(text) {
|
|
3161
3161
|
return { content: [{ type: "text", text }] };
|
|
3162
3162
|
}
|
|
3163
|
-
function buildServer(version = "0.1.
|
|
3163
|
+
function buildServer(version = "0.1.2") {
|
|
3164
3164
|
const server = new import_mcp.McpServer({ name: "pdgkit", version });
|
|
3165
3165
|
server.registerTool(
|
|
3166
3166
|
"pdg_validate",
|
|
@@ -3234,7 +3234,7 @@ function buildServer(version = "0.1.1") {
|
|
|
3234
3234
|
|
|
3235
3235
|
// src/node/index.ts
|
|
3236
3236
|
var import_node_fs3 = require("fs");
|
|
3237
|
-
var VERSION = "0.1.
|
|
3237
|
+
var VERSION = "0.1.2";
|
|
3238
3238
|
|
|
3239
3239
|
// bin/pdgkit-mcp.ts
|
|
3240
3240
|
async function main() {
|
package/dist/pdgkit-mcp.js
CHANGED
|
@@ -3136,7 +3136,7 @@ var langSchema = z.enum(["ja", "en", "both"]).default("ja");
|
|
|
3136
3136
|
function textResult(text) {
|
|
3137
3137
|
return { content: [{ type: "text", text }] };
|
|
3138
3138
|
}
|
|
3139
|
-
function buildServer(version = "0.1.
|
|
3139
|
+
function buildServer(version = "0.1.2") {
|
|
3140
3140
|
const server = new McpServer({ name: "pdgkit", version });
|
|
3141
3141
|
server.registerTool(
|
|
3142
3142
|
"pdg_validate",
|
|
@@ -3210,7 +3210,7 @@ function buildServer(version = "0.1.1") {
|
|
|
3210
3210
|
|
|
3211
3211
|
// src/node/index.ts
|
|
3212
3212
|
import { readFileSync as readFileSync2 } from "fs";
|
|
3213
|
-
var VERSION = "0.1.
|
|
3213
|
+
var VERSION = "0.1.2";
|
|
3214
3214
|
|
|
3215
3215
|
// bin/pdgkit-mcp.ts
|
|
3216
3216
|
async function main() {
|
package/dist/pdgkit.cjs
CHANGED
|
@@ -3365,7 +3365,7 @@ async function renderToPptx(source, opts = {}) {
|
|
|
3365
3365
|
}
|
|
3366
3366
|
|
|
3367
3367
|
// src/node/index.ts
|
|
3368
|
-
var VERSION = "0.1.
|
|
3368
|
+
var VERSION = "0.1.2";
|
|
3369
3369
|
function loadAuthoringGuide() {
|
|
3370
3370
|
return (0, import_node_fs2.readFileSync)(resolvePackageFile("docs", "ai-authoring-guide.md"), "utf8");
|
|
3371
3371
|
}
|
package/dist/pdgkit.global.js
CHANGED
|
@@ -244,4 +244,4 @@ S150 -> S100`,system:`100 = \u30B7\u30B9\u30C6\u30E0\u672C\u4F53 / Main system
|
|
|
244
244
|
20 : 21 22
|
|
245
245
|
21 .> 40 : \u7121\u7DDA / wireless
|
|
246
246
|
22 -> 30 : \u6709\u7DDA / wired
|
|
247
|
-
30 <-> 40 : \u901A\u4FE1 / comm`};var de={block:"\u30D6\u30ED\u30C3\u30AF\u56F3",flow:"\u30D5\u30ED\u30FC\u30C1\u30E3\u30FC\u30C8",state:"\u72B6\u614B\u9077\u79FB\u56F3",seq:"\u30B7\u30FC\u30B1\u30F3\u30B9\u56F3"};function Fn(t){let e=!1;for(let n=0;n<t.length;n++){let r=t[n];if(r==='"')e=!e;else if(!e&&r==="#")return t.slice(n+1)}return null}function jn(t){let e=!1;for(let n=0;n<t.length;n++){let r=t[n];if(r==='"')e=!e;else if(!e&&r==="#")return t.slice(0,n)}return t}var Vn=/^\s*!?\s*(?:pdgkit\s*:)?\s*kind\s*[:=]?\s*(block|flow|state|seq)\b/i;function Xn(t){for(let e=0;e<t.length;e++){let n=Fn(t[e]);if(n==null)continue;let r=n.match(Vn);if(r)return{kind:r[1].toLowerCase(),line:e+1}}return null}var Hn=/(?:^|\s)(?:<->|=>|->|<-|\.>|\.\.|-)(?:\s|$)/g,Wn=/[A-Za-z0-9_*](?:<->|<-|->|=>|\.>|\.\.|-)[A-Za-z0-9_*]/;function Kn(t){let e=t.match(Hn);return e?e.length:0}function ge(t){let e=Y(t),n=[...e.diagnostics],r=t.split(/\r?\n/),o=Xn(r),s=o?o.kind:null,i=null;o&&(i=o.kind===e.kind,i||n.push({severity:"error",line:o.line,col:1,message:`\u56F3\u7A2E\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3\u4E0D\u4E00\u81F4: \u5BA3\u8A00=${de[o.kind]}(${o.kind}) \u3060\u304C\u63A8\u8AD6=${de[e.kind]}(${e.kind})\u3002\u69CB\u9020(\u5305\u542B\u300C:\u300D/ \u672B\u5C3E\u300C?\u300D/ \u7B26\u53F7\u300C*\u300D/ \u5F80\u5FA9\u30FB\u300C<->\u300D)\u3092\u898B\u76F4\u3059\u304B\u3001\u5BA3\u8A00\u3092\u4FEE\u6B63\u3057\u3066\u304F\u3060\u3055\u3044\u3002`}));let a=new Set(e.diagnostics.filter(l=>l.severity==="error"&&l.message.startsWith("\u69CB\u6587\u4E0D\u660E")).map(l=>l.line));for(let l of a){let u=jn(r[l-1]??"").trim();u&&(Kn(u)>=2?n.push({severity:"info",line:l,col:1,message:"\u9023\u9396\u8A18\u6CD5(A -> B -> C)\u306F\u672A\u5BFE\u5FDC\u3067\u3059\u30021\u884C\u306B1\u63A5\u7D9A\u3067\u5206\u5272\u3057\u3066\u304F\u3060\u3055\u3044(\u4F8B: A -> B / B -> C)\u3002"}):Wn.test(u)&&n.push({severity:"info",line:l,col:1,message:'\u63A5\u7D9A\u6F14\u7B97\u5B50\u306E\u524D\u5F8C\u306B\u306F\u534A\u89D2\u30B9\u30DA\u30FC\u30B9\u304C\u5FC5\u8981\u3067\u3059(\u4F8B: "11-12" \u3067\u306F\u306A\u304F "11 - 12")\u3002'}))}n.sort((l,u)=>l.line-u.line||l.col-u.col);let c={errors:n.filter(l=>l.severity==="error").length,warnings:n.filter(l=>l.severity==="warning").length,infos:n.filter(l=>l.severity==="info").length};return{ok:c.errors===0,kind:e.kind,declaredKind:s,kindMatches:i,diagnostics:n,counts:c}}var Un="0.1.
|
|
247
|
+
30 <-> 40 : \u901A\u4FE1 / comm`};var de={block:"\u30D6\u30ED\u30C3\u30AF\u56F3",flow:"\u30D5\u30ED\u30FC\u30C1\u30E3\u30FC\u30C8",state:"\u72B6\u614B\u9077\u79FB\u56F3",seq:"\u30B7\u30FC\u30B1\u30F3\u30B9\u56F3"};function Fn(t){let e=!1;for(let n=0;n<t.length;n++){let r=t[n];if(r==='"')e=!e;else if(!e&&r==="#")return t.slice(n+1)}return null}function jn(t){let e=!1;for(let n=0;n<t.length;n++){let r=t[n];if(r==='"')e=!e;else if(!e&&r==="#")return t.slice(0,n)}return t}var Vn=/^\s*!?\s*(?:pdgkit\s*:)?\s*kind\s*[:=]?\s*(block|flow|state|seq)\b/i;function Xn(t){for(let e=0;e<t.length;e++){let n=Fn(t[e]);if(n==null)continue;let r=n.match(Vn);if(r)return{kind:r[1].toLowerCase(),line:e+1}}return null}var Hn=/(?:^|\s)(?:<->|=>|->|<-|\.>|\.\.|-)(?:\s|$)/g,Wn=/[A-Za-z0-9_*](?:<->|<-|->|=>|\.>|\.\.|-)[A-Za-z0-9_*]/;function Kn(t){let e=t.match(Hn);return e?e.length:0}function ge(t){let e=Y(t),n=[...e.diagnostics],r=t.split(/\r?\n/),o=Xn(r),s=o?o.kind:null,i=null;o&&(i=o.kind===e.kind,i||n.push({severity:"error",line:o.line,col:1,message:`\u56F3\u7A2E\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3\u4E0D\u4E00\u81F4: \u5BA3\u8A00=${de[o.kind]}(${o.kind}) \u3060\u304C\u63A8\u8AD6=${de[e.kind]}(${e.kind})\u3002\u69CB\u9020(\u5305\u542B\u300C:\u300D/ \u672B\u5C3E\u300C?\u300D/ \u7B26\u53F7\u300C*\u300D/ \u5F80\u5FA9\u30FB\u300C<->\u300D)\u3092\u898B\u76F4\u3059\u304B\u3001\u5BA3\u8A00\u3092\u4FEE\u6B63\u3057\u3066\u304F\u3060\u3055\u3044\u3002`}));let a=new Set(e.diagnostics.filter(l=>l.severity==="error"&&l.message.startsWith("\u69CB\u6587\u4E0D\u660E")).map(l=>l.line));for(let l of a){let u=jn(r[l-1]??"").trim();u&&(Kn(u)>=2?n.push({severity:"info",line:l,col:1,message:"\u9023\u9396\u8A18\u6CD5(A -> B -> C)\u306F\u672A\u5BFE\u5FDC\u3067\u3059\u30021\u884C\u306B1\u63A5\u7D9A\u3067\u5206\u5272\u3057\u3066\u304F\u3060\u3055\u3044(\u4F8B: A -> B / B -> C)\u3002"}):Wn.test(u)&&n.push({severity:"info",line:l,col:1,message:'\u63A5\u7D9A\u6F14\u7B97\u5B50\u306E\u524D\u5F8C\u306B\u306F\u534A\u89D2\u30B9\u30DA\u30FC\u30B9\u304C\u5FC5\u8981\u3067\u3059(\u4F8B: "11-12" \u3067\u306F\u306A\u304F "11 - 12")\u3002'}))}n.sort((l,u)=>l.line-u.line||l.col-u.col);let c={errors:n.filter(l=>l.severity==="error").length,warnings:n.filter(l=>l.severity==="warning").length,infos:n.filter(l=>l.severity==="info").length};return{ok:c.errors===0,kind:e.kind,declaredKind:s,kindMatches:i,diagnostics:n,counts:c}}var Un="0.1.2";function zn(t,e="ja"){return ut(t,{lang:e}).svg}return Me(qn);})();
|
package/dist/pdgkit.js
CHANGED
|
@@ -3341,7 +3341,7 @@ async function renderToPptx(source, opts = {}) {
|
|
|
3341
3341
|
}
|
|
3342
3342
|
|
|
3343
3343
|
// src/node/index.ts
|
|
3344
|
-
var VERSION = "0.1.
|
|
3344
|
+
var VERSION = "0.1.2";
|
|
3345
3345
|
function loadAuthoringGuide() {
|
|
3346
3346
|
return readFileSync2(resolvePackageFile("docs", "ai-authoring-guide.md"), "utf8");
|
|
3347
3347
|
}
|
|
@@ -4,10 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
あなたの仕事は創作ではなく **翻訳** です。入力の文章にある構成要素・関係・流れを、過不足なく `.pdg` の 3 種類の文へ写してください。文章に無いものを足さず、文章にあるものを落とさないことが最優先です。
|
|
6
6
|
|
|
7
|
+
**あなたはレンダラではありません。** 出力は `.pdg` テキストだけです。図そのもの(SVG・画像・描画コードなど)を自分で生成してはいけません。`.pdg` を pdgkit に渡せば、検証と描画は pdgkit が決定論的に行います。あなたの役割は、正しい `.pdg` を書くことに限られます。
|
|
8
|
+
|
|
7
9
|
---
|
|
8
10
|
|
|
9
11
|
## 0. 出力契約(最初に守ること)
|
|
10
12
|
|
|
13
|
+
- **あなたはレンダラではない。** 自分で図(SVG・画像・matplotlib などの描画)を作らず、`.pdg` テキストだけを書く。図の描画は pdgkit が行う。
|
|
14
|
+
- コードを実行できる環境(コードインタープリタ・エージェント)では、書いた `.pdg` を pdgkit の `validate`(検証)→ `render`(描画)に通し、**自分で画像を生成せず** pdgkit が出力したファイルを渡す。
|
|
11
15
|
- 出力は `.pdg` のコードブロックを 1 つだけにする。前後に説明文を付けない(明示的に求められた場合を除く)。
|
|
12
16
|
- コードブロックの 1 行目は必ず図種アサーション `#! kind: <block|flow|state|seq>` にする。
|
|
13
17
|
- 与えられた情報だけで判断し、足りない部分は最も妥当な構造で補って、完成した `.pdg` を出す。質問で止まらない。
|
|
@@ -410,6 +414,7 @@ S2 -> S1 : 復帰 / return
|
|
|
410
414
|
|
|
411
415
|
## 7. 出力前の自己点検
|
|
412
416
|
|
|
417
|
+
- 図そのもの(画像・SVG・描画コード)ではなく、`.pdg` テキストだけを出力している。
|
|
413
418
|
- 1 行目が `#! kind: ...` で、宣言した図種が実際の構造(4.3 の目印)と一致している。
|
|
414
419
|
- 文章中の要素を**漏れなく**定義し、文章に**無い**要素を足していない。
|
|
415
420
|
- 接続の**向き**が文章どおり(「A から B へ」「B から A へ」を取り違えていない)。
|