poe-code 3.0.182 → 3.0.184

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.
Files changed (92) hide show
  1. package/dist/bin/poe-agent.js +1 -1
  2. package/dist/cli/commands/dashboard-loop-shared.d.ts +2 -11
  3. package/dist/cli/commands/dashboard-loop-shared.js +2 -10
  4. package/dist/cli/commands/dashboard-loop-shared.js.map +1 -1
  5. package/dist/cli/commands/memory.d.ts +3 -0
  6. package/dist/cli/commands/memory.js +181 -0
  7. package/dist/cli/commands/memory.js.map +1 -0
  8. package/dist/cli/commands/pipeline-init.d.ts +16 -0
  9. package/dist/cli/commands/pipeline-init.js +168 -0
  10. package/dist/cli/commands/pipeline-init.js.map +1 -0
  11. package/dist/cli/commands/pipeline.js +264 -89
  12. package/dist/cli/commands/pipeline.js.map +1 -1
  13. package/dist/cli/commands/plan.d.ts +1 -0
  14. package/dist/cli/commands/plan.js +1 -1
  15. package/dist/cli/commands/plan.js.map +1 -1
  16. package/dist/cli/poe-agent-main.d.ts +10 -1
  17. package/dist/cli/poe-agent-main.js +89 -47
  18. package/dist/cli/poe-agent-main.js.map +1 -1
  19. package/dist/cli/program.js +5 -0
  20. package/dist/cli/program.js.map +1 -1
  21. package/dist/corpus/001-archaeoastronomy.md +479 -0
  22. package/dist/corpus/002-magnetohydrodynamics.md +475 -0
  23. package/dist/corpus/003-biosemiotics.md +483 -0
  24. package/dist/corpus/004-cryopedology.md +483 -0
  25. package/dist/corpus/005-geomicrobiology.md +479 -0
  26. package/dist/corpus/006-aeronomy.md +487 -0
  27. package/dist/corpus/007-paleoclimatology.md +479 -0
  28. package/dist/corpus/008-hydrogeophysics.md +479 -0
  29. package/dist/corpus/009-magnetostratigraphy.md +475 -0
  30. package/dist/corpus/010-isotope-hydrology.md +481 -0
  31. package/dist/corpus/011-speleothem-geochemistry.md +474 -0
  32. package/dist/corpus/012-astrobiogeochemistry.md +475 -0
  33. package/dist/corpus/013-neuroethology.md +483 -0
  34. package/dist/corpus/014-chronophysiology.md +483 -0
  35. package/dist/corpus/015-limnogeochemistry.md +475 -0
  36. package/dist/corpus/016-palynology.md +483 -0
  37. package/dist/corpus/017-volcanotectonics.md +473 -0
  38. package/dist/corpus/018-seismotectonics.md +473 -0
  39. package/dist/corpus/019-biogeomorphology.md +475 -0
  40. package/dist/corpus/020-geobiophysics.md +479 -0
  41. package/dist/corpus/021-phytolith-analysis.md +481 -0
  42. package/dist/corpus/022-archaeometallurgy.md +479 -0
  43. package/dist/corpus/023-paleomagnetism.md +479 -0
  44. package/dist/corpus/024-biocalorimetry.md +475 -0
  45. package/dist/corpus/025-atmospheric-chemiluminescence.md +473 -0
  46. package/dist/corpus/026-cryoseismology.md +479 -0
  47. package/dist/corpus/027-extremophile-radiobiology.md +475 -0
  48. package/dist/corpus/028-heliophysics.md +479 -0
  49. package/dist/corpus/029-astroparticle-geophysics.md +474 -0
  50. package/dist/corpus/030-glaciohydrology.md +479 -0
  51. package/dist/corpus/031-permafrost-microbiology.md +477 -0
  52. package/dist/corpus/032-ecoacoustics.md +479 -0
  53. package/dist/corpus/033-dendroclimatology.md +473 -0
  54. package/dist/corpus/034-ionospheric-tomography.md +477 -0
  55. package/dist/corpus/035-marine-geodesy.md +481 -0
  56. package/dist/corpus/036-sedimentary-ancient-dna.md +481 -0
  57. package/dist/corpus/037-myrmecochory-dynamics.md +474 -0
  58. package/dist/corpus/038-chemosensory-ecology.md +477 -0
  59. package/dist/corpus/039-spintronics-materials.md +479 -0
  60. package/dist/corpus/040-nanotoxicology.md +483 -0
  61. package/dist/corpus/041-cosmochemistry.md +483 -0
  62. package/dist/corpus/042-quaternary-geochronology.md +471 -0
  63. package/dist/corpus/043-biophotonics.md +479 -0
  64. package/dist/corpus/044-evolutionary-morphometrics.md +481 -0
  65. package/dist/corpus/045-cryovolcanology.md +475 -0
  66. package/dist/corpus/046-exoplanet-atmospheric-dynamics.md +479 -0
  67. package/dist/corpus/047-microbial-electrosynthesis.md +477 -0
  68. package/dist/corpus/048-paleoseismology.md +479 -0
  69. package/dist/corpus/049-actinide-geochemistry.md +477 -0
  70. package/dist/corpus/050-quantum-biology.md +489 -0
  71. package/dist/index.d.ts +2 -2
  72. package/dist/index.js +28342 -24810
  73. package/dist/index.js.map +4 -4
  74. package/dist/providers/poe-agent.js +3716 -1863
  75. package/dist/providers/poe-agent.js.map +4 -4
  76. package/dist/sdk/pipeline.d.ts +29 -2
  77. package/dist/sdk/pipeline.js +209 -2
  78. package/dist/sdk/pipeline.js.map +1 -1
  79. package/dist/services/config.d.ts +30 -1
  80. package/dist/services/config.js +11 -0
  81. package/dist/services/config.js.map +1 -1
  82. package/dist/templates/pipeline/SKILL_plan.md +26 -13
  83. package/dist/templates/pipeline/steps.yaml.mustache +5 -2
  84. package/package.json +4 -1
  85. package/packages/design-system/dist/dashboard/components/stats-pane.js +2 -1
  86. package/packages/design-system/dist/dashboard/index.d.ts +1 -0
  87. package/packages/design-system/dist/dashboard/index.js +1 -0
  88. package/packages/design-system/dist/dashboard/should-use-dashboard.d.ts +10 -0
  89. package/packages/design-system/dist/dashboard/should-use-dashboard.js +7 -0
  90. package/packages/design-system/dist/dashboard/types.d.ts +1 -0
  91. package/packages/design-system/dist/index.d.ts +1 -1
  92. package/packages/design-system/dist/index.js +1 -1
@@ -6,4 +6,4 @@ if (_major < 18) {
6
6
  );
7
7
  process.exit(1);
8
8
  }
9
- import("../index.js").then(function (m) { m.poeAgentMain(); }).catch(function (err) { console.error(err); process.exit(1); })
9
+ import("../cli/poe-agent-main.js").then(function (m) { m.poeAgentMain(); }).catch(function (err) { console.error(err); process.exit(1); })
@@ -1,23 +1,14 @@
1
- import { type Dashboard } from "@poe-code/design-system";
2
- type DashboardIo = {
3
- stdin: {
4
- isTTY?: boolean | undefined;
5
- };
6
- stdout: {
7
- isTTY?: boolean | undefined;
8
- };
9
- };
1
+ import { shouldUseInteractiveDashboard, type Dashboard } from "@poe-code/design-system";
10
2
  type DashboardQuitCommandOptions = {
11
3
  abortController: AbortController;
12
4
  dashboard: Pick<Dashboard, "destroy" | "onCommand" | "stop">;
13
5
  requestCancellation: () => void;
14
6
  };
7
+ export { shouldUseInteractiveDashboard };
15
8
  export declare function formatDashboardDuration(ms: number): string;
16
9
  export declare function formatDashboardTimestamp(timestamp: number): string;
17
10
  export declare function createDashboardLineBuffer(emit: (line: string) => void): {
18
11
  push(chunk: string): void;
19
12
  flush(): void;
20
13
  };
21
- export declare function shouldUseInteractiveDashboard(enabled: boolean | undefined, io?: DashboardIo): boolean;
22
14
  export declare function registerDashboardQuitCommands(options: DashboardQuitCommandOptions): void;
23
- export {};
@@ -1,4 +1,5 @@
1
- import { resolveOutputFormat } from "@poe-code/design-system";
1
+ import { shouldUseInteractiveDashboard } from "@poe-code/design-system";
2
+ export { shouldUseInteractiveDashboard };
2
3
  export function formatDashboardDuration(ms) {
3
4
  const totalSeconds = Math.round(ms / 1000);
4
5
  const minutes = Math.floor(totalSeconds / 60);
@@ -36,15 +37,6 @@ export function createDashboardLineBuffer(emit) {
36
37
  }
37
38
  };
38
39
  }
39
- export function shouldUseInteractiveDashboard(enabled, io = {
40
- stdin: process.stdin,
41
- stdout: process.stdout
42
- }) {
43
- return enabled === true
44
- && resolveOutputFormat() === "terminal"
45
- && Boolean(io.stdin.isTTY)
46
- && Boolean(io.stdout.isTTY);
47
- }
48
40
  export function registerDashboardQuitCommands(options) {
49
41
  options.dashboard.onCommand((command) => {
50
42
  if (command === "quit") {
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-loop-shared.js","sourceRoot":"","sources":["../../../src/cli/commands/dashboard-loop-shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAkB,MAAM,yBAAyB,CAAC;AAa9E,MAAM,UAAU,uBAAuB,CAAC,EAAU;IAChD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,YAAY,GAAG,EAAE,CAAC;IAClC,OAAO,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,SAAiB;IACxD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3D,OAAO,IAAI,KAAK,IAAI,OAAO,IAAI,OAAO,GAAG,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,IAA4B;IAIpE,IAAI,OAAO,GAAG,EAAE,CAAC;IAEjB,OAAO;QACL,IAAI,CAAC,KAAa;YAChB,OAAO,IAAI,KAAK,CAAC;YACjB,IAAI,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACzC,OAAO,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;gBAC3C,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBACzD,IAAI,CAAC,IAAI,CAAC,CAAC;gBACX,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;gBAC1C,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QACD,KAAK;YACH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO;YACT,CAAC;YAED,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACrE,IAAI,CAAC,IAAI,CAAC,CAAC;YACX,OAAO,GAAG,EAAE,CAAC;QACf,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,OAA4B,EAC5B,KAAkB;IAChB,KAAK,EAAE,OAAO,CAAC,KAAK;IACpB,MAAM,EAAE,OAAO,CAAC,MAAM;CACvB;IAED,OAAO,OAAO,KAAK,IAAI;WAClB,mBAAmB,EAAE,KAAK,UAAU;WACpC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;WACvB,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,OAAoC;IAChF,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE;QACtC,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;YACvB,OAAO,CAAC,mBAAmB,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAChC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACzB,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"dashboard-loop-shared.js","sourceRoot":"","sources":["../../../src/cli/commands/dashboard-loop-shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ import type { CliContainer } from "../container.js";
3
+ export declare function registerMemoryCommand(program: Command, container: CliContainer): void;
@@ -0,0 +1,181 @@
1
+ import path from "node:path";
2
+ import * as fs from "node:fs/promises";
3
+ import { confirmOrCancel } from "@poe-code/design-system";
4
+ import { clearMemory, computeTokenStats, initMemory, listPages, resolveMemoryRoot, searchMemory, statusOf } from "@poe-code/memory";
5
+ import { throwCommandNotFound } from "../command-not-found.js";
6
+ import { ValidationError } from "../errors.js";
7
+ import { createExecutionResources, resolveCommandFlags } from "./shared.js";
8
+ function resolvePageRelPath(input) {
9
+ const trimmed = input.trim();
10
+ if (trimmed.length === 0) {
11
+ throw new ValidationError("Missing page path.");
12
+ }
13
+ const normalized = trimmed.replaceAll("\\", "/");
14
+ const withExt = path.posix.extname(normalized).length === 0 ? `${normalized}.md` : normalized;
15
+ return withExt.startsWith("pages/") ? withExt : `pages/${withExt}`;
16
+ }
17
+ function displayPageRelPath(relPath) {
18
+ return relPath.startsWith("pages/") ? relPath.slice("pages/".length) : relPath;
19
+ }
20
+ async function assertInitialized(root) {
21
+ const status = await statusOf(root);
22
+ if (!status.initialized) {
23
+ throw new ValidationError(`Memory is not initialized. Run "poe-code memory init" in this project.`);
24
+ }
25
+ }
26
+ export function registerMemoryCommand(program, container) {
27
+ const memory = program
28
+ .command("memory")
29
+ .description("Persistent memory directory commands.")
30
+ .allowExcessArguments()
31
+ .action(function () {
32
+ if (this.args.length > 0) {
33
+ throwCommandNotFound({
34
+ container,
35
+ scope: "cli",
36
+ unknownCommand: this.args.at(0) ?? "",
37
+ helpArgs: ["memory", "--help"],
38
+ moduleUrl: import.meta.url
39
+ });
40
+ }
41
+ this.help();
42
+ });
43
+ memory
44
+ .command("init")
45
+ .description("Create .poe-code/memory/ with empty INDEX.md and LOG.md.")
46
+ .action(async () => {
47
+ const flags = resolveCommandFlags(program);
48
+ const resources = createExecutionResources(container, flags, "memory:init");
49
+ const root = resolveMemoryRoot(container.env.cwd);
50
+ resources.logger.intro("memory init");
51
+ if (flags.dryRun) {
52
+ resources.logger.dryRun(`Would initialize memory at ${root}`);
53
+ return;
54
+ }
55
+ await initMemory(root);
56
+ resources.context.complete({
57
+ success: `Initialized memory at ${path.relative(container.env.cwd, root)}`,
58
+ dry: `Would initialize memory at ${path.relative(container.env.cwd, root)}`
59
+ });
60
+ resources.context.finalize();
61
+ });
62
+ memory
63
+ .command("ls")
64
+ .description("List every page with a one-line description.")
65
+ .action(async () => {
66
+ const flags = resolveCommandFlags(program);
67
+ const resources = createExecutionResources(container, flags, "memory:ls");
68
+ const root = resolveMemoryRoot(container.env.cwd);
69
+ resources.logger.intro("memory ls");
70
+ await assertInitialized(root);
71
+ const pages = await listPages(root);
72
+ if (pages.length === 0) {
73
+ process.stdout.write("No memory pages yet.\n");
74
+ return;
75
+ }
76
+ for (const page of pages) {
77
+ const description = page.frontmatter.description?.trim() ?? "";
78
+ process.stdout.write(`${displayPageRelPath(page.relPath)}${description.length > 0 ? ` — ${description}` : ""}\n`);
79
+ }
80
+ });
81
+ memory
82
+ .command("show")
83
+ .description("Print a page to stdout.")
84
+ .argument("<path>", "Page path (relative to memory pages/)")
85
+ .action(async (pagePath) => {
86
+ const flags = resolveCommandFlags(program);
87
+ const resources = createExecutionResources(container, flags, "memory:show");
88
+ const root = resolveMemoryRoot(container.env.cwd);
89
+ resources.logger.intro("memory show");
90
+ await assertInitialized(root);
91
+ const relPath = resolvePageRelPath(pagePath);
92
+ const absPath = path.join(root, relPath);
93
+ try {
94
+ const content = await fs.readFile(absPath, "utf8");
95
+ process.stdout.write(content.endsWith("\n") ? content : `${content}\n`);
96
+ }
97
+ catch (error) {
98
+ if (typeof error === "object" &&
99
+ error !== null &&
100
+ "code" in error &&
101
+ error.code === "ENOENT") {
102
+ throw new ValidationError(`Page not found: ${displayPageRelPath(relPath)}`);
103
+ }
104
+ throw error;
105
+ }
106
+ });
107
+ memory
108
+ .command("search")
109
+ .description("Search over memory files for a substring.")
110
+ .argument("<query>", "Search query")
111
+ .action(async (query) => {
112
+ const flags = resolveCommandFlags(program);
113
+ const resources = createExecutionResources(container, flags, "memory:search");
114
+ const root = resolveMemoryRoot(container.env.cwd);
115
+ resources.logger.intro("memory search");
116
+ await assertInitialized(root);
117
+ const hits = await searchMemory(root, query);
118
+ if (hits.length === 0) {
119
+ process.stdout.write("No matches.\n");
120
+ return;
121
+ }
122
+ for (const hit of hits) {
123
+ const displayPath = displayPageRelPath(hit.relPath);
124
+ process.stdout.write(`${displayPath}:${hit.lineNumber}: ${hit.line}\n`);
125
+ }
126
+ });
127
+ memory
128
+ .command("status")
129
+ .description("Show memory status.")
130
+ .option("--no-tokens", "Skip token stats calculation")
131
+ .action(async function () {
132
+ const flags = resolveCommandFlags(program);
133
+ const resources = createExecutionResources(container, flags, "memory:status");
134
+ const root = resolveMemoryRoot(container.env.cwd);
135
+ const options = this.opts();
136
+ resources.logger.intro("memory status");
137
+ await assertInitialized(root);
138
+ const status = await statusOf(root);
139
+ process.stdout.write(`Pages: ${status.pageCount}\n`);
140
+ process.stdout.write(`Bytes: ${status.totalBytes}\n`);
141
+ if (status.lastWriteAt) {
142
+ process.stdout.write(`Last write: ${status.lastWriteAt}\n`);
143
+ }
144
+ if (options.tokens) {
145
+ const tokens = await computeTokenStats(root);
146
+ const ratio = Number.isFinite(tokens.reductionRatio)
147
+ ? `${tokens.reductionRatio.toFixed(2)}×`
148
+ : "0×";
149
+ process.stdout.write(`Tokens: memory=${tokens.memoryTokens}, sources=${tokens.sourceTokens}, ratio=${ratio}\n`);
150
+ if (tokens.missingSources.length > 0) {
151
+ process.stdout.write(`Missing sources: ${tokens.missingSources.join(", ")}\n`);
152
+ }
153
+ }
154
+ });
155
+ memory
156
+ .command("clear")
157
+ .description("Delete all memory content and re-initialize INDEX.md and LOG.md.")
158
+ .action(async () => {
159
+ const flags = resolveCommandFlags(program);
160
+ const resources = createExecutionResources(container, flags, "memory:clear");
161
+ const root = resolveMemoryRoot(container.env.cwd);
162
+ resources.logger.intro("memory clear");
163
+ await assertInitialized(root);
164
+ if (!flags.assumeYes) {
165
+ await confirmOrCancel({
166
+ message: "Clear all memory pages and cache?"
167
+ });
168
+ }
169
+ if (flags.dryRun) {
170
+ resources.logger.dryRun(`Would clear memory at ${root}`);
171
+ return;
172
+ }
173
+ await clearMemory(root);
174
+ resources.context.complete({
175
+ success: "Cleared memory.",
176
+ dry: "Would clear memory."
177
+ });
178
+ resources.context.finalize();
179
+ });
180
+ }
181
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../src/cli/commands/memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { CliContainer } from "../container.js";
2
+ export interface BuildPipelineInitPromptOptions {
3
+ question?: string;
4
+ sourceDocPath: string;
5
+ sourceDocContent: string;
6
+ skillContent: string;
7
+ }
8
+ export interface PipelineInitSource {
9
+ absolutePath: string;
10
+ relativePath: string;
11
+ title: string;
12
+ }
13
+ export declare function buildPipelineInitPrompt(options: BuildPipelineInitPromptOptions): string;
14
+ export declare function discoverPipelineInitSources(options: {
15
+ container: CliContainer;
16
+ }): Promise<PipelineInitSource[]>;
@@ -0,0 +1,168 @@
1
+ import path from "node:path";
2
+ import { readMergedDocument, resolveScope } from "@poe-code/poe-code-config";
3
+ import { resolveWorkflowPath } from "@poe-code/agent-kit";
4
+ import { resolvePlanDirectory as resolvePipelinePlanDirectory } from "@poe-code/pipeline";
5
+ import { pipelineConfigScope } from "../../services/config.js";
6
+ import { resolvePlanDirectory as resolveSourcePlanDirectory } from "./plan.js";
7
+ export function buildPipelineInitPrompt(options) {
8
+ const trimmedQuestion = options.question?.trim() ?? "";
9
+ const sourceTitle = extractTitle(options.sourceDocPath, options.sourceDocContent);
10
+ const userRequest = trimmedQuestion.length > 0
11
+ ? trimmedQuestion
12
+ : `Create a pipeline plan for "${sourceTitle}" based on the source document below. Treat the source document as the user request and do not ask the user for more input.`;
13
+ const fence = createMarkdownFence(options.sourceDocContent);
14
+ return [
15
+ "Follow the skill below to initialize a pipeline plan from an existing source document.",
16
+ "",
17
+ options.skillContent,
18
+ "",
19
+ "---",
20
+ "",
21
+ "Edit the source document in place by prepending valid YAML frontmatter.",
22
+ "Do not create a new file.",
23
+ `The final result must remain at: ${options.sourceDocPath}`,
24
+ "",
25
+ "User request:",
26
+ userRequest,
27
+ "",
28
+ "Source document:",
29
+ `Path: ${options.sourceDocPath}`,
30
+ `${fence}markdown`,
31
+ options.sourceDocContent,
32
+ fence
33
+ ].join("\n");
34
+ }
35
+ export async function discoverPipelineInitSources(options) {
36
+ const sourcePlanDirectory = await resolveSourcePlanDirectory(options.container);
37
+ const sourceAbsoluteDirectory = resolveWorkflowPath(sourcePlanDirectory, options.container.env.cwd, options.container.env.homeDir);
38
+ const pipelineAbsoluteDirectory = await resolveConfiguredPipelinePlanDirectory(options.container);
39
+ const existingPlanNames = await discoverExistingPipelinePlanNames(options.container.fs, pipelineAbsoluteDirectory);
40
+ const sourceFiles = await discoverMarkdownFiles(options.container.fs, sourceAbsoluteDirectory);
41
+ const sources = [];
42
+ for (const file of sourceFiles) {
43
+ const sourceName = path.basename(file.relativePath, path.extname(file.relativePath));
44
+ if (existingPlanNames.has(`plan-${sourceName}`)) {
45
+ continue;
46
+ }
47
+ const content = await options.container.fs.readFile(file.absolutePath, "utf8");
48
+ sources.push({
49
+ absolutePath: file.absolutePath,
50
+ relativePath: file.relativePath,
51
+ title: extractTitle(file.absolutePath, content)
52
+ });
53
+ }
54
+ return sources.sort((left, right) => left.relativePath.localeCompare(right.relativePath));
55
+ }
56
+ async function resolveConfiguredPipelinePlanDirectory(container) {
57
+ const document = await readMergedDocument(container.fs, container.env.configPath, container.env.projectConfigPath);
58
+ const config = resolveScope(pipelineConfigScope.schema, document[pipelineConfigScope.scope], container.env.variables);
59
+ const planDirectory = config.plan_directory?.trim();
60
+ return resolvePipelinePlanDirectory({
61
+ cwd: container.env.cwd,
62
+ homeDir: container.env.homeDir,
63
+ ...(planDirectory ? { planDirectory } : {})
64
+ });
65
+ }
66
+ async function discoverExistingPipelinePlanNames(fs, absoluteDirectory) {
67
+ let entries;
68
+ try {
69
+ entries = await fs.readdir(absoluteDirectory);
70
+ }
71
+ catch (error) {
72
+ if (isMissingDirectory(error)) {
73
+ return new Set();
74
+ }
75
+ throw error;
76
+ }
77
+ const planNames = new Set();
78
+ for (const entry of [...entries].sort((left, right) => left.localeCompare(right))) {
79
+ const lower = entry.toLowerCase();
80
+ if (!lower.startsWith("plan-")) {
81
+ continue;
82
+ }
83
+ if (!lower.endsWith(".md") && !lower.endsWith(".yaml")) {
84
+ continue;
85
+ }
86
+ const absolutePath = path.join(absoluteDirectory, entry);
87
+ const stat = await fs.stat(absolutePath);
88
+ if (!stat.isFile()) {
89
+ continue;
90
+ }
91
+ planNames.add(path.basename(entry, path.extname(entry)));
92
+ }
93
+ return planNames;
94
+ }
95
+ async function discoverMarkdownFiles(fs, absoluteDirectory, parentRelativePath = "") {
96
+ let entries;
97
+ try {
98
+ entries = await fs.readdir(absoluteDirectory);
99
+ }
100
+ catch (error) {
101
+ if (isMissingDirectory(error)) {
102
+ return [];
103
+ }
104
+ throw error;
105
+ }
106
+ const markdownFiles = [];
107
+ for (const entry of [...entries].sort((left, right) => left.localeCompare(right))) {
108
+ const absolutePath = path.join(absoluteDirectory, entry);
109
+ const relativePath = parentRelativePath.length > 0
110
+ ? path.join(parentRelativePath, entry)
111
+ : entry;
112
+ const stat = await fs.stat(absolutePath);
113
+ if (stat.isDirectory()) {
114
+ if (entry === "archive") {
115
+ continue;
116
+ }
117
+ markdownFiles.push(...await discoverMarkdownFiles(fs, absolutePath, relativePath));
118
+ continue;
119
+ }
120
+ if (!stat.isFile() || !entry.toLowerCase().endsWith(".md")) {
121
+ continue;
122
+ }
123
+ markdownFiles.push({
124
+ absolutePath,
125
+ relativePath
126
+ });
127
+ }
128
+ return markdownFiles;
129
+ }
130
+ function extractTitle(filePath, content) {
131
+ for (const line of content.split("\n")) {
132
+ const trimmed = line.trim();
133
+ if (!trimmed.startsWith("# ")) {
134
+ continue;
135
+ }
136
+ const title = trimmed.slice(2).trim();
137
+ if (title.length > 0) {
138
+ return title;
139
+ }
140
+ }
141
+ return path.basename(filePath, path.extname(filePath));
142
+ }
143
+ function createMarkdownFence(content) {
144
+ return "`".repeat(Math.max(3, longestBacktickRun(content) + 1));
145
+ }
146
+ function longestBacktickRun(content) {
147
+ let longest = 0;
148
+ let current = 0;
149
+ for (const char of content) {
150
+ if (char === "`") {
151
+ current += 1;
152
+ if (current > longest) {
153
+ longest = current;
154
+ }
155
+ continue;
156
+ }
157
+ current = 0;
158
+ }
159
+ return longest;
160
+ }
161
+ function isMissingDirectory(error) {
162
+ if (!error || typeof error !== "object" || !("code" in error)) {
163
+ return false;
164
+ }
165
+ const code = error.code;
166
+ return code === "ENOENT" || code === "ENOTDIR";
167
+ }
168
+ //# sourceMappingURL=pipeline-init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline-init.js","sourceRoot":"","sources":["../../../src/cli/commands/pipeline-init.ts"],"names":[],"mappings":"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"}