poe-code 3.0.237 → 3.0.238

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.
@@ -0,0 +1,23 @@
1
+ export interface PromptDocumentFileSystem {
2
+ readFile(filePath: string, encoding: BufferEncoding): Promise<string>;
3
+ realpath(filePath: string): Promise<string>;
4
+ }
5
+ export interface ResolvePromptDocumentInput {
6
+ cwd: string;
7
+ filePath: string;
8
+ content?: string;
9
+ optional?: boolean;
10
+ basePaths?: readonly string[];
11
+ variables?: Record<string, unknown>;
12
+ validate?: boolean;
13
+ fs?: PromptDocumentFileSystem;
14
+ }
15
+ export interface ResolvedPromptDocument {
16
+ template: string;
17
+ prompt: string;
18
+ metadata: Record<string, unknown>;
19
+ sources: Record<string, string>;
20
+ source: string;
21
+ chain: string[];
22
+ }
23
+ export declare function resolvePromptDocument(input: ResolvePromptDocumentInput): Promise<ResolvedPromptDocument>;
@@ -0,0 +1,86 @@
1
+ import { readFile, realpath } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { resolve as resolveConfigDocument } from "@poe-code/config-extends";
4
+ const nativeFs = { readFile, realpath };
5
+ export async function resolvePromptDocument(input) {
6
+ const cwd = path.resolve(input.cwd);
7
+ const filePath = path.resolve(cwd, input.filePath);
8
+ assertInsideRoot(filePath, cwd, "Prompt document path must remain inside cwd");
9
+ const basePaths = (input.basePaths ?? []).map((basePath) => {
10
+ if (!path.isAbsolute(basePath)) {
11
+ throw new Error(`Prompt document base paths must be absolute: ${basePath}`);
12
+ }
13
+ return path.resolve(basePath);
14
+ });
15
+ const fs = createRootedFileSystem(input.fs ?? nativeFs, [cwd, ...basePaths]);
16
+ const content = input.content ?? (await readDocumentContent(fs, filePath, input.optional));
17
+ const chain = [
18
+ { source: "document", filePath, content },
19
+ ...basePaths.map((basePath, index) => ({ source: `base-${index + 1}`, path: basePath }))
20
+ ];
21
+ const composed = await resolveConfigDocument(chain, { fs });
22
+ const rendered = await resolveConfigDocument(chain, {
23
+ fs,
24
+ view: input.variables ?? {},
25
+ validate: input.validate ?? true
26
+ });
27
+ const template = requirePrompt(composed.data.prompt, filePath);
28
+ const prompt = requirePrompt(rendered.data.prompt, filePath);
29
+ const { prompt: _ignored, ...metadata } = rendered.data;
30
+ void _ignored;
31
+ return {
32
+ template,
33
+ prompt,
34
+ metadata,
35
+ sources: rendered.sources,
36
+ source: filePath,
37
+ chain: rendered.chain
38
+ };
39
+ }
40
+ async function readDocumentContent(fs, filePath, optional) {
41
+ try {
42
+ return await fs.readFile(filePath, "utf8");
43
+ }
44
+ catch (error) {
45
+ if (optional && hasCode(error, "ENOENT")) {
46
+ return "---\nextends: true\n---\n";
47
+ }
48
+ throw error;
49
+ }
50
+ }
51
+ function createRootedFileSystem(fs, roots) {
52
+ return {
53
+ async readFile(filePath, encoding) {
54
+ await assertRealPathInsideOriginalRoot(fs, filePath, roots);
55
+ return fs.readFile(filePath, encoding);
56
+ },
57
+ realpath: (filePath) => fs.realpath(filePath)
58
+ };
59
+ }
60
+ async function assertRealPathInsideOriginalRoot(fs, filePath, roots) {
61
+ const resolvedPath = path.resolve(await fs.realpath(filePath));
62
+ const originalRoot = roots.find((root) => isInsideRoot(filePath, root));
63
+ if (!originalRoot || !isInsideRoot(resolvedPath, originalRoot)) {
64
+ throw new Error(`Prompt document path escapes configured root: ${filePath}`);
65
+ }
66
+ }
67
+ function assertInsideRoot(filePath, root, message) {
68
+ if (!isInsideRoot(filePath, root)) {
69
+ throw new Error(`${message}: ${filePath}`);
70
+ }
71
+ }
72
+ function isInsideRoot(filePath, root) {
73
+ const relativePath = path.relative(path.resolve(root), path.resolve(filePath));
74
+ return (relativePath === "" ||
75
+ (relativePath !== ".." && !relativePath.startsWith(`..${path.sep}`) && !path.isAbsolute(relativePath)));
76
+ }
77
+ function requirePrompt(value, filePath) {
78
+ if (typeof value !== "string") {
79
+ throw new Error(`Prompt document does not resolve to a Markdown prompt: ${filePath}`);
80
+ }
81
+ return value;
82
+ }
83
+ function hasCode(error, code) {
84
+ return typeof error === "object" && error !== null && "code" in error && error.code === code;
85
+ }
86
+ //# sourceMappingURL=prompt-document.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-document.js","sourceRoot":"","sources":["../../src/sdk/prompt-document.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "poe-code",
3
- "version": "3.0.237",
3
+ "version": "3.0.238",
4
4
  "description": "CLI tool to configure Poe API for developer workflows.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",