@zihanw/pi-forge 0.3.0 → 0.3.1
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 +80 -2
- package/README.zh-CN.md +65 -2
- package/dist/compiler.d.ts +10 -0
- package/dist/compiler.d.ts.map +1 -0
- package/dist/compiler.js +490 -0
- package/dist/compiler.js.map +1 -0
- package/dist/extension-registry.d.ts +25 -0
- package/dist/extension-registry.d.ts.map +1 -0
- package/dist/extension-registry.js +6 -0
- package/dist/extension-registry.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +364 -0
- package/dist/index.js.map +1 -0
- package/dist/lifecycle.d.ts +14 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +139 -0
- package/dist/lifecycle.js.map +1 -0
- package/dist/loader.d.ts +8 -0
- package/dist/loader.d.ts.map +1 -0
- package/dist/loader.js +345 -0
- package/dist/loader.js.map +1 -0
- package/dist/macro-engine.d.ts +23 -0
- package/dist/macro-engine.d.ts.map +1 -0
- package/dist/macro-engine.js +262 -0
- package/dist/macro-engine.js.map +1 -0
- package/dist/payload-capture.d.ts +15 -0
- package/dist/payload-capture.d.ts.map +1 -0
- package/dist/payload-capture.js +86 -0
- package/dist/payload-capture.js.map +1 -0
- package/dist/payload-command.d.ts +10 -0
- package/dist/payload-command.d.ts.map +1 -0
- package/dist/payload-command.js +112 -0
- package/dist/payload-command.js.map +1 -0
- package/dist/policy.d.ts +6 -0
- package/dist/policy.d.ts.map +1 -0
- package/dist/policy.js +38 -0
- package/dist/policy.js.map +1 -0
- package/dist/preset-command.d.ts +14 -0
- package/dist/preset-command.d.ts.map +1 -0
- package/dist/preset-command.js +223 -0
- package/dist/preset-command.js.map +1 -0
- package/dist/preview.d.ts +12 -0
- package/dist/preview.d.ts.map +1 -0
- package/dist/preview.js +179 -0
- package/dist/preview.js.map +1 -0
- package/dist/regex.d.ts +7 -0
- package/dist/regex.d.ts.map +1 -0
- package/dist/regex.js +432 -0
- package/dist/regex.js.map +1 -0
- package/dist/render-helpers.d.ts +44 -0
- package/dist/render-helpers.d.ts.map +1 -0
- package/dist/render-helpers.js +128 -0
- package/dist/render-helpers.js.map +1 -0
- package/dist/runtime-state.d.ts +24 -0
- package/dist/runtime-state.d.ts.map +1 -0
- package/dist/runtime-state.js +13 -0
- package/dist/runtime-state.js.map +1 -0
- package/dist/sillytavern-importer/items.d.ts +3 -0
- package/dist/sillytavern-importer/items.d.ts.map +1 -0
- package/dist/sillytavern-importer/items.js +88 -0
- package/dist/sillytavern-importer/items.js.map +1 -0
- package/dist/sillytavern-importer/macros.d.ts +15 -0
- package/dist/sillytavern-importer/macros.d.ts.map +1 -0
- package/dist/sillytavern-importer/macros.js +141 -0
- package/dist/sillytavern-importer/macros.js.map +1 -0
- package/dist/sillytavern-importer/prompt-order.d.ts +6 -0
- package/dist/sillytavern-importer/prompt-order.d.ts.map +1 -0
- package/dist/sillytavern-importer/prompt-order.js +38 -0
- package/dist/sillytavern-importer/prompt-order.js.map +1 -0
- package/dist/sillytavern-importer/regex.d.ts +3 -0
- package/dist/sillytavern-importer/regex.d.ts.map +1 -0
- package/dist/sillytavern-importer/regex.js +275 -0
- package/dist/sillytavern-importer/regex.js.map +1 -0
- package/dist/sillytavern-importer/report.d.ts +21 -0
- package/dist/sillytavern-importer/report.d.ts.map +1 -0
- package/dist/sillytavern-importer/report.js +166 -0
- package/dist/sillytavern-importer/report.js.map +1 -0
- package/dist/sillytavern-importer/types.d.ts +106 -0
- package/dist/sillytavern-importer/types.d.ts.map +1 -0
- package/dist/sillytavern-importer/types.js +2 -0
- package/dist/sillytavern-importer/types.js.map +1 -0
- package/dist/sillytavern-importer.d.ts +5 -0
- package/dist/sillytavern-importer.d.ts.map +1 -0
- package/dist/sillytavern-importer.js +117 -0
- package/dist/sillytavern-importer.js.map +1 -0
- package/dist/slot-renderers.d.ts +25 -0
- package/dist/slot-renderers.d.ts.map +1 -0
- package/dist/slot-renderers.js +334 -0
- package/dist/slot-renderers.js.map +1 -0
- package/dist/stack-migration.d.ts +29 -0
- package/dist/stack-migration.d.ts.map +1 -0
- package/dist/stack-migration.js +126 -0
- package/dist/stack-migration.js.map +1 -0
- package/dist/storage.d.ts +6 -0
- package/dist/storage.d.ts.map +1 -0
- package/dist/storage.js +23 -0
- package/dist/storage.js.map +1 -0
- package/dist/types.d.ts +173 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/web-editor/index.d.ts +3 -0
- package/dist/web-editor/index.d.ts.map +1 -0
- package/dist/web-editor/index.js +2 -0
- package/dist/web-editor/index.js.map +1 -0
- package/dist/web-editor/page.d.ts +2 -0
- package/dist/web-editor/page.d.ts.map +1 -0
- package/dist/web-editor/page.js +3331 -0
- package/dist/web-editor/page.js.map +1 -0
- package/dist/web-editor/server.d.ts +4 -0
- package/dist/web-editor/server.d.ts.map +1 -0
- package/dist/web-editor/server.js +263 -0
- package/dist/web-editor/server.js.map +1 -0
- package/dist/web-editor/types.d.ts +125 -0
- package/dist/web-editor/types.d.ts.map +1 -0
- package/dist/web-editor/types.js +2 -0
- package/dist/web-editor/types.js.map +1 -0
- package/dist/web-host.d.ts +29 -0
- package/dist/web-host.d.ts.map +1 -0
- package/dist/web-host.js +174 -0
- package/dist/web-host.js.map +1 -0
- package/examples/custom-system-status-extension/README.md +78 -0
- package/examples/custom-system-status-extension/index.ts +176 -0
- package/examples/custom-system-status-extension/prompt-stack.json +39 -0
- package/examples/image-reader-prompt-stack.json +124 -0
- package/package.json +28 -2
- package/src/compiler.ts +2 -472
- package/src/extension-registry.ts +33 -0
- package/src/index.ts +192 -652
- package/src/lifecycle.ts +171 -0
- package/src/macro-engine.ts +358 -0
- package/src/payload-command.ts +138 -0
- package/src/preset-command.ts +271 -0
- package/src/preview.ts +226 -0
- package/src/render-helpers.ts +169 -0
- package/src/runtime-state.ts +36 -0
- package/src/sillytavern-importer/items.ts +98 -0
- package/src/sillytavern-importer/macros.ts +159 -0
- package/src/sillytavern-importer/prompt-order.ts +54 -0
- package/src/sillytavern-importer/regex.ts +270 -0
- package/src/sillytavern-importer/report.ts +202 -0
- package/src/sillytavern-importer/types.ts +120 -0
- package/src/sillytavern-importer.ts +55 -865
- package/src/slot-renderers.ts +414 -0
- package/src/types.ts +3 -14
- package/src/web-editor/page.ts +516 -30
- package/src/web-editor/server.ts +5 -0
- package/src/web-editor/types.ts +14 -0
- package/src/web-host.ts +3 -0
package/README.md
CHANGED
|
@@ -50,7 +50,7 @@ Prefer clicking over typing JSON? pi-forge has a built-in web editor:
|
|
|
50
50
|
/preset ui
|
|
51
51
|
```
|
|
52
52
|
|
|
53
|
-
Drag, drop, edit, validate, inspect full previews and captured payloads, manage variables/context/regex rules in tabs, switch dark mode, recover through raw stack JSON, import, export, fork, and delete stacks — all in your browser. Stack metadata is collapsible so the active editor stays in view.
|
|
53
|
+
Drag, drop, create, edit, validate, inspect full previews and captured payloads, manage variables/context/regex rules in tabs, switch dark mode, recover through raw stack JSON, import, export, fork, and delete stacks — all in your browser. New stacks start from the default Pi prompt mirror layout. Stack metadata is collapsible so the active editor stays in view. The policy tab shows registered tools and loaded skills with selected-pattern chips and filtering, so allow/deny rules can be built from exact names while still supporting wildcards.
|
|
54
54
|
|
|
55
55
|
Import accepts native pi-forge stack JSON and SillyTavern preset JSON. SillyTavern presets are converted to prompt stacks automatically; if a preset contains multiple `character_id` configs, the editor asks which one to use.
|
|
56
56
|
|
|
@@ -192,7 +192,7 @@ Items are arranged in order. When the stack is active, pi-forge:
|
|
|
192
192
|
| `skills` | Loaded Pi skills |
|
|
193
193
|
| `project-context` | Project instructions and context files |
|
|
194
194
|
| `variables` | Static/session/turn template variables |
|
|
195
|
-
| `date` / `cwd` / `date-cwd` | Current date and working directory |
|
|
195
|
+
| `date` / `cwd` / `date-cwd` | Current date, optional current time, and working directory |
|
|
196
196
|
| `active-model` | Which model is being used |
|
|
197
197
|
| `append-system-prompt` | User's appended system prompt text |
|
|
198
198
|
| `pi-docs` | Pi documentation guidance |
|
|
@@ -257,6 +257,72 @@ Use these in block content to insert dynamic values:
|
|
|
257
257
|
{{clearsessionvar::name}} clear a session variable
|
|
258
258
|
```
|
|
259
259
|
|
|
260
|
+
### Filter and conditional macros
|
|
261
|
+
|
|
262
|
+
Nested macros are supported, and `::` separators are parsed only at the current macro depth.
|
|
263
|
+
|
|
264
|
+
| Macro | Expands to |
|
|
265
|
+
|-------|-----------|
|
|
266
|
+
| `{{trim::value}}` | `value` with leading/trailing whitespace removed |
|
|
267
|
+
| `{{upper::value}}` | Uppercase `value` |
|
|
268
|
+
| `{{lower::value}}` | Lowercase `value` |
|
|
269
|
+
| `{{json::value}}` | JSON string literal for `value` |
|
|
270
|
+
| `{{xml::value}}` | XML-escaped `value` |
|
|
271
|
+
| `{{ifvar::name::then::else}}` | `then` when a variable exists, otherwise `else` |
|
|
272
|
+
| `{{ifeq::name::expected::then::else}}` | `then` when a variable equals `expected`, otherwise `else` |
|
|
273
|
+
| `{{iftools::tool::then::else}}` | `then` when the selected tool list includes `tool`, otherwise `else` |
|
|
274
|
+
| `{{ifslot::slot::then::else}}` | `then` when the enabled stack items include `slot`, otherwise `else` |
|
|
275
|
+
|
|
276
|
+
Conditional branches are lazy: only the selected branch is expanded, so skipped branches cannot set or clear variables. The final `else` argument is optional and defaults to empty text.
|
|
277
|
+
|
|
278
|
+
### Trusted custom macros and slots
|
|
279
|
+
|
|
280
|
+
Custom macros and slots are registered by trusted extension code, not embedded in prompt-stack JSON. A stack can reference the registered name and pass declarative options; the executable `render` body lives in a Pi extension or another explicitly installed package.
|
|
281
|
+
|
|
282
|
+
```ts
|
|
283
|
+
import { registerMacro, registerSlot } from "@zihanw/pi-forge";
|
|
284
|
+
|
|
285
|
+
registerMacro({
|
|
286
|
+
name: "ticketId",
|
|
287
|
+
description: "Current ticket id from session variables.",
|
|
288
|
+
render: (ctx) => ctx.variables.toMacroText(ctx.variables.get("ticket.id")),
|
|
289
|
+
});
|
|
290
|
+
|
|
291
|
+
registerSlot({
|
|
292
|
+
name: "ticket-context",
|
|
293
|
+
description: "Render ticket context for the current task.",
|
|
294
|
+
options: {
|
|
295
|
+
heading: { type: "string", default: "Ticket context" },
|
|
296
|
+
},
|
|
297
|
+
render: (ctx) => [
|
|
298
|
+
String(ctx.options.heading ?? "Ticket context") + ":",
|
|
299
|
+
"- Ticket: " + ctx.variables.toMacroText(ctx.variables.get("ticket.id")),
|
|
300
|
+
"- Project: " + ctx.helpers.normalizePath(ctx.runtime.options.cwd),
|
|
301
|
+
].join("\n"),
|
|
302
|
+
});
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
The stack remains declarative:
|
|
306
|
+
|
|
307
|
+
```json
|
|
308
|
+
{
|
|
309
|
+
"kind": "slot",
|
|
310
|
+
"id": "ticket-context",
|
|
311
|
+
"enabled": true,
|
|
312
|
+
"role": "system",
|
|
313
|
+
"slot": "ticket-context",
|
|
314
|
+
"options": {
|
|
315
|
+
"heading": "Current ticket"
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
Missing custom slots are validation warnings until the registering extension is installed and loaded. Built-in macros and slots use the same registry internally, so `getRegisteredMacros()` and `getRegisteredSlots()` can be used as implementation references.
|
|
321
|
+
|
|
322
|
+
For a complete copyable extension and stack, see [examples/custom-system-status-extension](examples/custom-system-status-extension). It registers a `{{cpuLoad}}` macro and a `machine-status` slot from a trusted Pi extension file.
|
|
323
|
+
|
|
324
|
+
When pi-forge is installed as a package, custom extensions can import `@zihanw/pi-forge`. When developing from a local checkout loaded through Pi settings, set an explicit local path as shown in the example README, such as `PI_FORGE_MODULE=/path/to/pi-forge/src/index.ts`. pi-forge keeps the macro/slot registry process-global so compatible local module copies share registrations.
|
|
325
|
+
|
|
260
326
|
## Stack reference
|
|
261
327
|
|
|
262
328
|
### Full item types
|
|
@@ -312,6 +378,10 @@ Set `stripAssistantThinking` to `true` to remove prior assistant thinking blocks
|
|
|
312
378
|
|
|
313
379
|
Use `includeSummaries: false` to omit Pi branch/compaction summary messages, `roles` to keep only specific message roles, `toolMode: "drop"` to remove prior tool-call/tool-result history, and `maxMessages` / `maxChars` to keep only recent history. When filters or limits can break tool-call pairs, pi-forge removes dangling tool calls/results instead of sending inconsistent tool history.
|
|
314
380
|
|
|
381
|
+
### Date slot options
|
|
382
|
+
|
|
383
|
+
Set `"includeTime": true` on a `date` or `date-cwd` slot to include the current time in `HH:MM:SS` after the current date.
|
|
384
|
+
|
|
315
385
|
### Structured slot format options
|
|
316
386
|
|
|
317
387
|
Structured runtime slots default to XML-style wrappers. Add `"format": "plain"` to `tools`, `tool-guidelines`, `skills`, `project-context`, or `variables` slots for compact newline-separated output.
|
|
@@ -434,6 +504,8 @@ SillyTavern imports convert deterministic prompt-only `{{match}}` / `$0` full-ma
|
|
|
434
504
|
```bash
|
|
435
505
|
git clone <repo>
|
|
436
506
|
cd pi-forge
|
|
507
|
+
npm install
|
|
508
|
+
npm run build
|
|
437
509
|
# .pi/settings.json already points at the package root
|
|
438
510
|
pi # start Pi, trust the project, /reload if needed
|
|
439
511
|
```
|
|
@@ -450,6 +522,12 @@ Typecheck:
|
|
|
450
522
|
npm run typecheck
|
|
451
523
|
```
|
|
452
524
|
|
|
525
|
+
Build package output:
|
|
526
|
+
|
|
527
|
+
```bash
|
|
528
|
+
npm run build
|
|
529
|
+
```
|
|
530
|
+
|
|
453
531
|
## License
|
|
454
532
|
|
|
455
533
|
MIT
|
package/README.zh-CN.md
CHANGED
|
@@ -50,7 +50,7 @@ $EDITOR .pi/forge/prompt-stacks/default.json
|
|
|
50
50
|
/preset ui
|
|
51
51
|
```
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
拖拽、新建、编辑、校验、查看完整预览和捕获的 payload、用 tabs 管理变量/context/regex 规则、切换深色模式、通过原始 stack JSON 修复高级字段、导入、导出、fork、删除栈 —— 全在浏览器里完成。新栈会从默认 Pi prompt mirror 布局开始。Stack metadata 可以折叠,方便把当前编辑区留在屏幕内。Policy tab 会显示已注册工具和已加载 skills,并提供已选 pattern chips 和过滤输入,方便用精确名称编写 allow/deny 规则,同时保留通配符写法。
|
|
54
54
|
|
|
55
55
|
导入支持原生 pi-forge stack JSON,也支持 SillyTavern 预设 JSON。SillyTavern 预设会自动转换成 prompt stack;如果一个预设里有多个 `character_id` 配置,编辑器会询问要使用哪一个。
|
|
56
56
|
|
|
@@ -190,7 +190,7 @@ pi-forge 会把预设转换为 prompt stack,并生成迁移报告,标明哪
|
|
|
190
190
|
| `skills` | 已加载的 Pi 技能 |
|
|
191
191
|
| `project-context` | 项目指令和上下文文件 |
|
|
192
192
|
| `variables` | 静态/会话/轮次模板变量 |
|
|
193
|
-
| `date` / `cwd` / `date-cwd` |
|
|
193
|
+
| `date` / `cwd` / `date-cwd` | 当前日期、可选当前时间和工作目录 |
|
|
194
194
|
| `active-model` | 当前使用的模型 |
|
|
195
195
|
| `append-system-prompt` | 用户追加的系统提示词 |
|
|
196
196
|
| `pi-docs` | Pi 文档指导 |
|
|
@@ -255,6 +255,57 @@ pi-forge 会把预设转换为 prompt stack,并生成迁移报告,标明哪
|
|
|
255
255
|
{{clearsessionvar::name}} 清除会话变量
|
|
256
256
|
```
|
|
257
257
|
|
|
258
|
+
### 过滤和条件宏
|
|
259
|
+
|
|
260
|
+
宏支持嵌套,`::` 分隔符只会在当前宏深度拆分。
|
|
261
|
+
|
|
262
|
+
| 宏 | 展开为 |
|
|
263
|
+
|----|--------|
|
|
264
|
+
| `{{trim::value}}` | 去掉首尾空白后的 `value` |
|
|
265
|
+
| `{{upper::value}}` | 大写 `value` |
|
|
266
|
+
| `{{lower::value}}` | 小写 `value` |
|
|
267
|
+
| `{{json::value}}` | `value` 的 JSON 字符串字面量 |
|
|
268
|
+
| `{{xml::value}}` | XML 转义后的 `value` |
|
|
269
|
+
| `{{ifvar::name::then::else}}` | 变量存在时输出 `then`,否则输出 `else` |
|
|
270
|
+
| `{{ifeq::name::expected::then::else}}` | 变量等于 `expected` 时输出 `then`,否则输出 `else` |
|
|
271
|
+
| `{{iftools::tool::then::else}}` | 当前工具列表包含 `tool` 时输出 `then`,否则输出 `else` |
|
|
272
|
+
| `{{ifslot::slot::then::else}}` | 启用的 stack 条目包含 `slot` 时输出 `then`,否则输出 `else` |
|
|
273
|
+
|
|
274
|
+
条件宏是 lazy 的:只有选中的分支会展开,所以被跳过的分支不会设置或清除变量。最后的 `else` 参数可省略,默认输出空文本。
|
|
275
|
+
|
|
276
|
+
### 可信自定义宏和 slot
|
|
277
|
+
|
|
278
|
+
自定义宏和 slot 由可信扩展代码注册,不把可执行代码写进 prompt-stack JSON。Stack 只引用已注册名称并传入声明式 options;真正的 `render` 逻辑放在 Pi 扩展或明确安装的包里。
|
|
279
|
+
|
|
280
|
+
```ts
|
|
281
|
+
import { registerMacro, registerSlot } from "@zihanw/pi-forge";
|
|
282
|
+
|
|
283
|
+
registerMacro({
|
|
284
|
+
name: "ticketId",
|
|
285
|
+
description: "从会话变量读取当前 ticket id。",
|
|
286
|
+
render: (ctx) => ctx.variables.toMacroText(ctx.variables.get("ticket.id")),
|
|
287
|
+
});
|
|
288
|
+
|
|
289
|
+
registerSlot({
|
|
290
|
+
name: "ticket-context",
|
|
291
|
+
description: "渲染当前任务的 ticket 上下文。",
|
|
292
|
+
options: {
|
|
293
|
+
heading: { type: "string", default: "Ticket context" },
|
|
294
|
+
},
|
|
295
|
+
render: (ctx) => [
|
|
296
|
+
String(ctx.options.heading ?? "Ticket context") + ":",
|
|
297
|
+
"- Ticket: " + ctx.variables.toMacroText(ctx.variables.get("ticket.id")),
|
|
298
|
+
"- Project: " + ctx.helpers.normalizePath(ctx.runtime.options.cwd),
|
|
299
|
+
].join("\n"),
|
|
300
|
+
});
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
缺失的自定义 slot 会产生校验 warning,直到对应注册扩展安装并加载。内置宏和 slot 也使用同一个 registry,可用 `getRegisteredMacros()` 和 `getRegisteredSlots()` 作为实现参考。
|
|
304
|
+
|
|
305
|
+
完整可复制的扩展和 stack 示例见 [examples/custom-system-status-extension](examples/custom-system-status-extension)。它在可信 Pi 扩展文件中注册 `{{cpuLoad}}` 宏和 `machine-status` slot。
|
|
306
|
+
|
|
307
|
+
如果 pi-forge 是作为 package 安装的,自定义扩展可以 import `@zihanw/pi-forge`。如果你是通过 Pi settings 加载本地 checkout,请按示例 README 设置显式路径,例如 `PI_FORGE_MODULE=/path/to/pi-forge/src/index.ts`。pi-forge 会把 macro/slot registry 放在当前进程的 global registry 中,因此兼容的本地模块副本可以共享注册结果。
|
|
308
|
+
|
|
258
309
|
## Stack 参考
|
|
259
310
|
|
|
260
311
|
### 完整条目类型
|
|
@@ -310,6 +361,10 @@ pi-forge 会把预设转换为 prompt stack,并生成迁移报告,标明哪
|
|
|
310
361
|
|
|
311
362
|
使用 `includeSummaries: false` 可以排除 Pi 的 branch/compaction summary 消息;`roles` 可以只保留指定消息角色;`toolMode: "drop"` 可以移除之前的 tool call/tool result history;`maxMessages` / `maxChars` 可以只保留最近 history。当过滤或截断可能拆散 tool-call pair 时,pi-forge 会移除悬空的 tool call/result,避免发送不一致的 tool history。
|
|
312
363
|
|
|
364
|
+
### Date slot 选项
|
|
365
|
+
|
|
366
|
+
在 `date` 或 `date-cwd` slot 上设置 `"includeTime": true`,会在当前日期后加入 `HH:MM:SS` 格式的当前时间。
|
|
367
|
+
|
|
313
368
|
### 结构化 slot 格式选项
|
|
314
369
|
|
|
315
370
|
结构化运行时 slot 默认使用 XML 风格包装。给 `tools`、`tool-guidelines`、`skills`、`project-context` 或 `variables` slot 添加 `"format": "plain"`,可输出更紧凑的换行分隔文本。
|
|
@@ -432,6 +487,8 @@ SillyTavern 导入会把确定性的 prompt-only `{{match}}` / `$0` full-match r
|
|
|
432
487
|
```bash
|
|
433
488
|
git clone <repo>
|
|
434
489
|
cd pi-forge
|
|
490
|
+
npm install
|
|
491
|
+
npm run build
|
|
435
492
|
# .pi/settings.json 已指向包根目录
|
|
436
493
|
pi # 启动 Pi,信任项目,必要时 /reload
|
|
437
494
|
```
|
|
@@ -448,6 +505,12 @@ npm test
|
|
|
448
505
|
npm run typecheck
|
|
449
506
|
```
|
|
450
507
|
|
|
508
|
+
构建 package 输出:
|
|
509
|
+
|
|
510
|
+
```bash
|
|
511
|
+
npm run build
|
|
512
|
+
```
|
|
513
|
+
|
|
451
514
|
## License
|
|
452
515
|
|
|
453
516
|
MIT
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { AgentMessage } from "@earendil-works/pi-agent-core";
|
|
2
|
+
import type { CompileMessagesResult, CompileSystemPromptResult, PromptRuntime, PromptStack, PromptVariableValue, PromptVariableStore } from "./types.ts";
|
|
3
|
+
export declare function createPromptVariableStore(sessionVariables?: Record<string, PromptVariableValue>): PromptVariableStore;
|
|
4
|
+
export declare function resetTurnVariables(store: PromptVariableStore): void;
|
|
5
|
+
export declare function markSessionVariablesClean(store: PromptVariableStore): void;
|
|
6
|
+
export declare function compileSystemPrompt(stack: PromptStack, runtime: PromptRuntime, baseSystemPrompt: string): CompileSystemPromptResult;
|
|
7
|
+
export declare function compileMessages(stack: PromptStack, runtime: PromptRuntime, originalMessages: AgentMessage[]): CompileMessagesResult;
|
|
8
|
+
export declare function getLatestUserMessage(messages: AgentMessage[]): string | undefined;
|
|
9
|
+
export declare function agentMessageToPreviewText(message: AgentMessage): string;
|
|
10
|
+
//# sourceMappingURL=compiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../src/compiler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAEX,qBAAqB,EACrB,yBAAyB,EACzB,aAAa,EACb,WAAW,EAKX,mBAAmB,EACnB,mBAAmB,EACnB,MAAM,YAAY,CAAC;AAgBpB,wBAAgB,yBAAyB,CAAC,gBAAgB,GAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAM,GAAG,mBAAmB,CAEzH;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAGnE;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAE1E;AAED,wBAAgB,mBAAmB,CAClC,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,aAAa,EACtB,gBAAgB,EAAE,MAAM,GACtB,yBAAyB,CAuC3B;AAED,wBAAgB,eAAe,CAC9B,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,aAAa,EACtB,gBAAgB,EAAE,YAAY,EAAE,GAC9B,qBAAqB,CA2CvB;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM,GAAG,SAAS,CASjF;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAWvE"}
|