@the-forge-flow/ultra-compress-pi 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.
Files changed (38) hide show
  1. package/dist/commands/types.d.ts +2 -4
  2. package/dist/commands/types.d.ts.map +1 -1
  3. package/dist/commands/uc-file.d.ts +2 -2
  4. package/dist/commands/uc-file.d.ts.map +1 -1
  5. package/dist/commands/uc-file.js +80 -63
  6. package/dist/commands/uc-file.js.map +1 -1
  7. package/dist/commands/uc-revert.d.ts +4 -1
  8. package/dist/commands/uc-revert.d.ts.map +1 -1
  9. package/dist/commands/uc-revert.js +15 -1
  10. package/dist/commands/uc-revert.js.map +1 -1
  11. package/dist/commands/uc.d.ts.map +1 -1
  12. package/dist/commands/uc.js +4 -0
  13. package/dist/commands/uc.js.map +1 -1
  14. package/dist/index.d.ts +4 -9
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +6 -33
  17. package/dist/index.js.map +1 -1
  18. package/dist/services/index.d.ts +0 -2
  19. package/dist/services/index.d.ts.map +1 -1
  20. package/dist/services/index.js +0 -1
  21. package/dist/services/index.js.map +1 -1
  22. package/dist/services/path-complete.d.ts +3 -0
  23. package/dist/services/path-complete.d.ts.map +1 -0
  24. package/dist/services/path-complete.js +56 -0
  25. package/dist/services/path-complete.js.map +1 -0
  26. package/dist/types.d.ts +0 -7
  27. package/dist/types.d.ts.map +1 -1
  28. package/dist/types.js +0 -14
  29. package/dist/types.js.map +1 -1
  30. package/package.json +1 -1
  31. package/dist/services/compress-pipeline.d.ts +0 -12
  32. package/dist/services/compress-pipeline.d.ts.map +0 -1
  33. package/dist/services/compress-pipeline.js +0 -81
  34. package/dist/services/compress-pipeline.js.map +0 -1
  35. package/dist/services/llm-factory.d.ts +0 -15
  36. package/dist/services/llm-factory.d.ts.map +0 -1
  37. package/dist/services/llm-factory.js +0 -24
  38. package/dist/services/llm-factory.js.map +0 -1
@@ -1,7 +1,5 @@
1
- export interface AutocompleteItem {
2
- value: string;
3
- label: string;
4
- }
1
+ import type { AutocompleteItem } from "@mariozechner/pi-tui";
2
+ export type { AutocompleteItem };
5
3
  export interface CommandUI {
6
4
  notify(message: string, level?: "info" | "warning" | "error"): void;
7
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/commands/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACzB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,IAAI,CAAC;CACpE;AAED,MAAM,WAAW,cAAc;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,SAAS,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,sBAAsB,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,EAAE,GAAG,IAAI,CAAC;CACnE"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/commands/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAEjC,MAAM,WAAW,SAAS;IACzB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,IAAI,CAAC;CACpE;AAED,MAAM,WAAW,cAAc;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,SAAS,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,sBAAsB,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,EAAE,GAAG,IAAI,CAAC;CACnE"}
@@ -1,6 +1,6 @@
1
- import type { CommandContext, CommandDefinition } from "./types";
1
+ import type { CommandDefinition } from "./types";
2
2
  export interface UcFileDeps {
3
- llm: (ctx: CommandContext) => import("../services/compress-pipeline").LLMCall;
3
+ sendUserMessage: (prompt: string) => void;
4
4
  cwd?: string;
5
5
  }
6
6
  export declare function createUcFileCommand(deps: UcFileDeps): CommandDefinition;
@@ -1 +1 @@
1
- {"version":3,"file":"uc-file.d.ts","sourceRoot":"","sources":["../../src/commands/uc-file.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAoB,cAAc,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEnF,MAAM,WAAW,UAAU;IAC1B,GAAG,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,+BAA+B,EAAE,OAAO,CAAC;IAC9E,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAiBD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,iBAAiB,CA8FvE"}
1
+ {"version":3,"file":"uc-file.d.ts","sourceRoot":"","sources":["../../src/commands/uc-file.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAoB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEnE,MAAM,WAAW,UAAU;IAE1B,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAkDD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,iBAAiB,CA2FvE"}
@@ -1,15 +1,19 @@
1
- import { readdirSync } from "node:fs";
2
- import { basename, join } from "node:path";
3
- import { compressTextPipeline } from "../services/compress-pipeline";
4
- import { extOf, isSupportedExtension, resolveForCompression, writeWithBackup, } from "../services/file-ops";
5
- import { PathEscapeError, SymlinkRejectedError } from "../services/path-guard";
6
- import { appendCompressedFile } from "../services/state-store";
7
- import { ACTIVE_LEVELS, BackupExistsError, FileTooLargeError, InvalidLevelError, UnsupportedFileTypeError, } from "../types";
1
+ import { existsSync } from "node:fs";
2
+ import { basename } from "node:path";
3
+ import { backupPathFor } from "../services/backup-path";
4
+ import { extOf, isSupportedExtension } from "../services/file-ops";
5
+ import { buildLevelPromptFragment } from "../services/level-prompts";
6
+ import { completePath } from "../services/path-complete";
7
+ import { safeResolveInCwd } from "../services/path-guard";
8
+ import { ACTIVE_LEVELS, BackupExistsError, InvalidLevelError, UnsupportedFileTypeError, } from "../types";
8
9
  function isActiveLevel(s) {
9
10
  return ACTIVE_LEVELS.includes(s);
10
11
  }
11
12
  function parseArgs(args) {
12
- const parts = args.trim().split(/\s+/);
13
+ const parts = args
14
+ .trim()
15
+ .split(/\s+/)
16
+ .filter((p) => p.length > 0);
13
17
  const yes = parts.includes("--yes");
14
18
  const filtered = parts.filter((p) => p !== "--yes");
15
19
  return {
@@ -18,32 +22,62 @@ function parseArgs(args) {
18
22
  yes,
19
23
  };
20
24
  }
25
+ function buildPreviewPrompt(absPath, level) {
26
+ const rules = buildLevelPromptFragment(level, "file");
27
+ return `I want a PREVIEW of compressing \`${absPath}\` to level \`${level}\` — do not write anything yet.
28
+
29
+ ${rules}
30
+
31
+ Steps:
32
+ 1. Read the file at \`${absPath}\`.
33
+ 2. Apply the level-${level} rules above to its contents.
34
+ 3. Show me the compressed version inside a fenced code block.
35
+ 4. Report the character count: before → after, percentage saved.
36
+ 5. Do NOT edit or write the file. If I approve, I'll re-run with \`--yes\` to write.`;
37
+ }
38
+ function buildWritePrompt(absPath, level, backupPath) {
39
+ const rules = buildLevelPromptFragment(level, "file");
40
+ return `Compress \`${absPath}\` to level \`${level}\` and write the result.
41
+
42
+ ${rules}
43
+
44
+ Steps (do in this order):
45
+ 1. Read the file at \`${absPath}\`.
46
+ 2. Copy the original to \`${backupPath}\` first via Bash: \`cp "${absPath}" "${backupPath}"\`.
47
+ 3. Apply the level-${level} rules above to produce the compressed content.
48
+ 4. Write the compressed content to \`${absPath}\` via Edit/Write (replacing the original).
49
+ 5. Confirm backup exists and report: character count before → after, percentage saved.
50
+
51
+ Do NOT wrap the compressed output in a markdown code fence in the written file. Write the bare compressed body.`;
52
+ }
21
53
  export function createUcFileCommand(deps) {
22
54
  return {
23
55
  name: "uc-file",
24
- description: "Compress a markdown file to a given level (preview write with backup).",
56
+ description: "Compress a markdown file to a given level (preview by default, --yes writes with backup). Delegates to the agent.",
57
+ // PI replaces the ENTIRE args prefix with the selected value. So every
58
+ // AutocompleteItem.value must be the full reconstructed args string up to
59
+ // and including the completion.
25
60
  getArgumentCompletions(prefix) {
26
- const parts = prefix.split(/\s+/);
27
- if (parts.length >= 2) {
28
- const levelPrefix = parts[parts.length - 1] ?? "";
29
- const items = ACTIVE_LEVELS.filter((l) => l.startsWith(levelPrefix)).map((l) => ({
30
- value: l,
61
+ const trimmed = prefix ?? "";
62
+ const parts = trimmed.split(/\s+/);
63
+ const endsWithSpace = /\s$/.test(trimmed);
64
+ // Position 2: completing the level. Path already typed (parts[0]).
65
+ if (parts.length >= 2 || (parts.length === 1 && endsWithSpace && parts[0])) {
66
+ const pathPart = parts[0] ?? "";
67
+ const levelPartial = endsWithSpace && parts.length === 1 ? "" : (parts[parts.length - 1] ?? "");
68
+ const items = ACTIVE_LEVELS.filter((l) => l.startsWith(levelPartial)).map((l) => ({
69
+ value: `${pathPart} ${l}`,
31
70
  label: l,
32
71
  }));
33
72
  return items.length > 0 ? items : null;
34
73
  }
35
- try {
36
- const cwd = deps.cwd ?? process.cwd();
37
- const entries = readdirSync(cwd, { withFileTypes: true });
38
- const files = entries
39
- .filter((e) => e.isFile() && isSupportedExtension(extOf(e.name)))
40
- .map((e) => join(cwd, e.name))
41
- .filter((p) => p.startsWith(join(cwd, parts[0] ?? "")));
42
- return files.length > 0 ? files.map((f) => ({ value: f, label: basename(f) })) : null;
43
- }
44
- catch {
74
+ // Position 1: path completion with nested-directory support.
75
+ const baseDir = deps.cwd ?? process.cwd();
76
+ const pathPartial = parts[0] ?? "";
77
+ const candidates = completePath(pathPartial, baseDir);
78
+ if (candidates.length === 0)
45
79
  return null;
46
- }
80
+ return candidates.map((c) => ({ value: c, label: c }));
47
81
  },
48
82
  async handler(args, ctx) {
49
83
  const { path, level, yes } = parseArgs(args);
@@ -52,53 +86,36 @@ export function createUcFileCommand(deps) {
52
86
  return;
53
87
  }
54
88
  let abs;
55
- let backupPath;
56
- let input;
57
89
  try {
58
- ({ abs, backupPath, content: input } = resolveForCompression(path, ctx.cwd));
90
+ abs = safeResolveInCwd(path, ctx.cwd);
59
91
  }
60
92
  catch (e) {
61
- if (e instanceof PathEscapeError ||
62
- e instanceof SymlinkRejectedError ||
63
- e instanceof UnsupportedFileTypeError ||
64
- e instanceof BackupExistsError ||
65
- e instanceof FileTooLargeError) {
66
- ctx.ui.notify(e.message, "error");
67
- return;
68
- }
69
- throw e;
93
+ ctx.ui.notify(e.message, "error");
94
+ return;
70
95
  }
71
- const llm = deps.llm(ctx);
72
- let result;
73
- try {
74
- result = await compressTextPipeline({
75
- input,
76
- level,
77
- mode: "file",
78
- llm,
79
- });
96
+ if (!existsSync(abs)) {
97
+ ctx.ui.notify(`ultra-compress: file not found "${abs}"`, "error");
98
+ return;
80
99
  }
81
- catch (e) {
82
- ctx.ui.notify(`ultra-compress: ${e.message}`, "error");
100
+ const ext = extOf(abs);
101
+ if (!isSupportedExtension(ext)) {
102
+ ctx.ui.notify(new UnsupportedFileTypeError(abs, `extension "${ext}" not supported`).message, "error");
103
+ return;
104
+ }
105
+ if (abs.endsWith(".original.md")) {
106
+ ctx.ui.notify(new UnsupportedFileTypeError(abs, "path looks like a backup file").message, "error");
83
107
  return;
84
108
  }
85
- if (!yes) {
86
- const pct = Math.round(result.ratio * 100);
87
- ctx.ui.notify(`ultra-compress preview: ${input.length} → ${result.compressed.length} (${pct}% saved). Re-run with --yes to write.`, "info");
88
- if (result.warnings.length > 0) {
89
- ctx.ui.notify(`warnings: ${result.warnings.join(" | ")}`, "warning");
90
- }
109
+ const backupPath = backupPathFor(abs);
110
+ if (existsSync(backupPath)) {
111
+ ctx.ui.notify(new BackupExistsError(backupPath).message, "error");
91
112
  return;
92
113
  }
93
- writeWithBackup(abs, backupPath, result.compressed);
94
- await appendCompressedFile({
95
- path: abs,
96
- level,
97
- before: input.length,
98
- after: result.compressed.length,
99
- at: new Date().toISOString(),
100
- }, ctx.cwd);
101
- ctx.ui.notify(`ultra-compress: compressed and written. Backup at ${backupPath}.`, "info");
114
+ const prompt = yes
115
+ ? buildWritePrompt(abs, level, backupPath)
116
+ : buildPreviewPrompt(abs, level);
117
+ ctx.ui.notify(`ultra-compress: delegating ${yes ? "write" : "preview"} of ${basename(abs)} at ${level} to the agent...`, "info");
118
+ deps.sendUserMessage(prompt);
102
119
  },
103
120
  };
104
121
  }
@@ -1 +1 @@
1
- {"version":3,"file":"uc-file.js","sourceRoot":"","sources":["../../src/commands/uc-file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"uc-file.js","sourceRoot":"","sources":["../../src/commands/uc-file.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,6 @@
1
1
  import type { CommandDefinition } from "./types";
2
- export declare function createUcRevertCommand(): CommandDefinition;
2
+ export interface UcRevertDeps {
3
+ cwd?: string;
4
+ }
5
+ export declare function createUcRevertCommand(deps?: UcRevertDeps): CommandDefinition;
3
6
  //# sourceMappingURL=uc-revert.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"uc-revert.d.ts","sourceRoot":"","sources":["../../src/commands/uc-revert.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,wBAAgB,qBAAqB,IAAI,iBAAiB,CAgCzD"}
1
+ {"version":3,"file":"uc-revert.d.ts","sourceRoot":"","sources":["../../src/commands/uc-revert.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAoB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEnE,MAAM,WAAW,YAAY;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,qBAAqB,CAAC,IAAI,GAAE,YAAiB,GAAG,iBAAiB,CA4ChF"}
@@ -1,9 +1,23 @@
1
+ import { existsSync } from "node:fs";
2
+ import { backupPathFor } from "../services/backup-path";
1
3
  import { restoreFromBackup } from "../services/file-ops";
4
+ import { completePath } from "../services/path-complete";
2
5
  import { PathEscapeError, SymlinkRejectedError, safeResolveInCwd } from "../services/path-guard";
3
- export function createUcRevertCommand() {
6
+ export function createUcRevertCommand(deps = {}) {
4
7
  return {
5
8
  name: "uc-revert",
6
9
  description: "Restore a file from its ultra-compress .original.md backup.",
10
+ getArgumentCompletions(prefix) {
11
+ const trimmed = prefix ?? "";
12
+ const parts = trimmed.split(/\s+/);
13
+ const baseDir = deps.cwd ?? process.cwd();
14
+ const partial = parts[0] ?? "";
15
+ // Show only files whose backup exists — only revertable paths.
16
+ const candidates = completePath(partial, baseDir, (absPath) => existsSync(backupPathFor(absPath)));
17
+ if (candidates.length === 0)
18
+ return null;
19
+ return candidates.map((c) => ({ value: c, label: c }));
20
+ },
7
21
  async handler(args, ctx) {
8
22
  const path = args.trim();
9
23
  if (!path) {
@@ -1 +1 @@
1
- {"version":3,"file":"uc-revert.js","sourceRoot":"","sources":["../../src/commands/uc-revert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAGjG,MAAM,UAAU,qBAAqB;IACpC,OAAO;QACN,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,6DAA6D;QAC1E,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG;YACtB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACX,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,0CAA0C,EAAE,OAAO,CAAC,CAAC;gBACnE,OAAO;YACR,CAAC;YACD,IAAI,GAAW,CAAC;YAChB,IAAI,CAAC;gBACJ,GAAG,GAAG,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YACvC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACZ,IAAI,CAAC,YAAY,eAAe,IAAI,CAAC,YAAY,oBAAoB,EAAE,CAAC;oBACvE,GAAG,CAAC,EAAE,CAAC,MAAM,CAAE,CAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC7C,OAAO;gBACR,CAAC;gBACD,MAAM,CAAC,CAAC;YACT,CAAC;YACD,IAAI,CAAC;gBACJ,iBAAiB,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACZ,IAAK,CAAW,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;oBAC3C,GAAG,CAAC,EAAE,CAAC,MAAM,CAAE,CAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC7C,OAAO;gBACR,CAAC;gBACD,MAAM,CAAC,CAAC;YACT,CAAC;YACD,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,4BAA4B,GAAG,eAAe,EAAE,MAAM,CAAC,CAAC;QACvE,CAAC;KACD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"uc-revert.js","sourceRoot":"","sources":["../../src/commands/uc-revert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAOjG,MAAM,UAAU,qBAAqB,CAAC,OAAqB,EAAE;IAC5D,OAAO;QACN,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,6DAA6D;QAC1E,sBAAsB,CAAC,MAAc;YACpC,MAAM,OAAO,GAAG,MAAM,IAAI,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACnC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/B,+DAA+D;YAC/D,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAC7D,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAClC,CAAC;YACF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YACzC,OAAO,UAAU,CAAC,GAAG,CAAmB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1E,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG;YACtB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACX,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,0CAA0C,EAAE,OAAO,CAAC,CAAC;gBACnE,OAAO;YACR,CAAC;YACD,IAAI,GAAW,CAAC;YAChB,IAAI,CAAC;gBACJ,GAAG,GAAG,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YACvC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACZ,IAAI,CAAC,YAAY,eAAe,IAAI,CAAC,YAAY,oBAAoB,EAAE,CAAC;oBACvE,GAAG,CAAC,EAAE,CAAC,MAAM,CAAE,CAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC7C,OAAO;gBACR,CAAC;gBACD,MAAM,CAAC,CAAC;YACT,CAAC;YACD,IAAI,CAAC;gBACJ,iBAAiB,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACZ,IAAK,CAAW,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;oBAC3C,GAAG,CAAC,EAAE,CAAC,MAAM,CAAE,CAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC7C,OAAO;gBACR,CAAC;gBACD,MAAM,CAAC,CAAC;YACT,CAAC;YACD,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,4BAA4B,GAAG,eAAe,EAAE,MAAM,CAAC,CAAC;QACvE,CAAC;KACD,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"uc.d.ts","sourceRoot":"","sources":["../../src/commands/uc.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAoB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAMnE,wBAAgB,eAAe,IAAI,iBAAiB,CAsBnD"}
1
+ {"version":3,"file":"uc.d.ts","sourceRoot":"","sources":["../../src/commands/uc.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAoB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAMnE,wBAAgB,eAAe,IAAI,iBAAiB,CA0BnD"}
@@ -16,6 +16,10 @@ export function createUcCommand() {
16
16
  },
17
17
  async handler(args, ctx) {
18
18
  const level = args.trim();
19
+ if (!level) {
20
+ ctx.ui.notify("ultra-compress: usage: /uc <off|lite|standard|ultra|symbolic>", "error");
21
+ return;
22
+ }
19
23
  if (!isLevel(level)) {
20
24
  ctx.ui.notify(new InvalidLevelError(level).message, "error");
21
25
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"uc.js","sourceRoot":"","sources":["../../src/commands/uc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAc,MAAM,UAAU,CAAC;AAGrE,SAAS,OAAO,CAAC,CAAS;IACzB,OAAQ,UAAgC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,eAAe;IAC9B,OAAO;QACN,IAAI,EAAE,IAAI;QACV,WAAW,EACV,mFAAmF;QACpF,sBAAsB,CAAC,MAAc;YACpC,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACxE,KAAK,EAAE,CAAC;gBACR,KAAK,EAAE,CAAC;aACR,CAAC,CAAC,CAAC;YACJ,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QACxC,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG;YACtB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC7D,OAAO;YACR,CAAC;YACD,MAAM,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YAChC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;QACpD,CAAC;KACD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"uc.js","sourceRoot":"","sources":["../../src/commands/uc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAc,MAAM,UAAU,CAAC;AAGrE,SAAS,OAAO,CAAC,CAAS;IACzB,OAAQ,UAAgC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,eAAe;IAC9B,OAAO;QACN,IAAI,EAAE,IAAI;QACV,WAAW,EACV,mFAAmF;QACpF,sBAAsB,CAAC,MAAc;YACpC,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACxE,KAAK,EAAE,CAAC;gBACR,KAAK,EAAE,CAAC;aACR,CAAC,CAAC,CAAC;YACJ,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QACxC,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG;YACtB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACZ,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,+DAA+D,EAAE,OAAO,CAAC,CAAC;gBACxF,OAAO;YACR,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC7D,OAAO;YACR,CAAC;YACD,MAAM,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YAChC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;QACpD,CAAC;KACD,CAAC;AACH,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,4 @@
1
- import { type LLMFactoryContext } from "./services/llm-factory";
2
- import type { ActiveLevel, CompressOptions, CompressResult, Level } from "./types";
1
+ import type { ActiveLevel, Level } from "./types";
3
2
  type PiEventHandler = (event: unknown, ctx: unknown) => unknown | Promise<unknown>;
4
3
  interface PiRegisteredCommand {
5
4
  description?: string;
@@ -14,24 +13,20 @@ interface PiCommandContext {
14
13
  notify?: (message: string, level?: string) => void;
15
14
  };
16
15
  cwd?: string;
17
- modelRegistry?: LLMFactoryContext["modelRegistry"];
18
- signal?: AbortSignal;
19
16
  }
20
17
  export interface PiExtensionApi {
21
18
  on(event: string, handler: PiEventHandler): void;
22
19
  registerCommand(name: string, config: PiRegisteredCommand): void;
20
+ sendUserMessage(content: string, options?: {
21
+ deliverAs?: "steer" | "followUp";
22
+ }): void;
23
23
  cwd?: string;
24
24
  }
25
25
  export default function ultraCompressExtension(pi: PiExtensionApi): void;
26
26
  export type { ActiveLevel, CompressOptions, CompressResult, Level, Mode, } from "./types";
27
- export { PIContextRequiredError } from "./types";
28
27
  export { buildLevelPromptFragment } from "./services/level-prompts";
29
28
  export { validateCompression } from "./services/validator";
30
29
  export declare function getActiveLevel(projectRoot?: string): Promise<Level>;
31
- export type CtxLike = LLMFactoryContext & {
32
- cwd?: string;
33
- };
34
- export declare function compressText(input: string, level: ActiveLevel, ctx: CtxLike, opts?: CompressOptions): Promise<CompressResult>;
35
30
  export declare function compressTextLexical(input: string, level: ActiveLevel): {
36
31
  compressed: string;
37
32
  before: number;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,KAAK,iBAAiB,EAAW,MAAM,wBAAwB,CAAC;AAEzE,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAInF,KAAK,cAAc,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEnF,UAAU,mBAAmB;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sBAAsB,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;IACxF,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D;AAED,UAAU,gBAAgB;IACzB,EAAE,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAC;IAC5D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,iBAAiB,CAAC,eAAe,CAAC,CAAC;IACnD,MAAM,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC9B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IACjD,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACjE,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAoBD,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI,CAuDvE;AAID,YAAY,EACX,WAAW,EACX,eAAe,EACf,cAAc,EACd,KAAK,EACL,IAAI,GACJ,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,wBAAsB,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAGzE;AAED,MAAM,MAAM,OAAO,GAAG,iBAAiB,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,wBAAsB,YAAY,CACjC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,OAAO,EACZ,IAAI,CAAC,EAAE,eAAe,GACpB,OAAO,CAAC,cAAc,CAAC,CAazB;AAED,wBAAgB,mBAAmB,CAClC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,WAAW,GAChB;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAGvD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAIlD,KAAK,cAAc,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEnF,UAAU,mBAAmB;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sBAAsB,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;IACxF,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D;AAED,UAAU,gBAAgB;IACzB,EAAE,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAC;IAC5D,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC9B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IACjD,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACjE,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,GAAG,UAAU,CAAA;KAAE,GAAG,IAAI,CAAC;IACvF,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAoBD,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI,CAiDvE;AAID,YAAY,EACX,WAAW,EACX,eAAe,EACf,cAAc,EACd,KAAK,EACL,IAAI,GACJ,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,wBAAsB,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAGzE;AAED,wBAAgB,mBAAmB,CAClC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,WAAW,GAChB;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAGvD"}
package/dist/index.js CHANGED
@@ -2,9 +2,7 @@ import { dirname, join } from "node:path";
2
2
  import { fileURLToPath } from "node:url";
3
3
  import { createUcCommand, createUcFileCommand, createUcRevertCommand, createUcStatusCommand, } from "./commands";
4
4
  import { createAgentEndHook, createBeforeAgentStartHook, createSessionStartHook } from "./hooks";
5
- import { compressTextPipeline } from "./services/compress-pipeline";
6
5
  import { applyLevelLexical } from "./services/level-rules";
7
- import { makeLLM } from "./services/llm-factory";
8
6
  import { loadState } from "./services/state-store";
9
7
  function wrapCommand(def) {
10
8
  return {
@@ -29,15 +27,7 @@ export default function ultraCompressExtension(pi) {
29
27
  };
30
28
  pi.registerCommand("uc", wrapCommand(createUcCommand()));
31
29
  pi.registerCommand("uc-file", wrapCommand(createUcFileCommand({
32
- llm: (ctx) => {
33
- const piCtx = ctx;
34
- const factoryCtx = {};
35
- if (piCtx.modelRegistry !== undefined)
36
- factoryCtx.modelRegistry = piCtx.modelRegistry;
37
- if (piCtx.signal !== undefined)
38
- factoryCtx.signal = piCtx.signal;
39
- return makeLLM(factoryCtx);
40
- },
30
+ sendUserMessage: (prompt) => pi.sendUserMessage(prompt),
41
31
  })));
42
32
  pi.registerCommand("uc-status", wrapCommand(createUcStatusCommand()));
43
33
  pi.registerCommand("uc-revert", wrapCommand(createUcRevertCommand()));
@@ -54,11 +44,11 @@ export default function ultraCompressExtension(pi) {
54
44
  pi.on("before_agent_start", async (event, ctx) => {
55
45
  const e = event;
56
46
  const c = ctx;
57
- if (typeof e?.prompt !== "string" || typeof e?.systemPrompt !== "string")
58
- return;
47
+ if (typeof e?.systemPrompt !== "string")
48
+ return undefined;
59
49
  if (typeof c?.cwd !== "string")
60
- return;
61
- return await beforeAgentStart({ prompt: e.prompt, systemPrompt: e.systemPrompt }, { cwd: c.cwd });
50
+ return undefined;
51
+ return await beforeAgentStart({ prompt: typeof e.prompt === "string" ? e.prompt : "", systemPrompt: e.systemPrompt }, { cwd: c.cwd });
62
52
  });
63
53
  pi.on("agent_end", async (event, ctx) => {
64
54
  const c = ctx;
@@ -69,31 +59,14 @@ export default function ultraCompressExtension(pi) {
69
59
  });
70
60
  const extensionDir = dirname(fileURLToPath(import.meta.url));
71
61
  const skillsDir = join(extensionDir, "skills");
72
- pi.on("resources_discover", () => ({ skills: [skillsDir] }));
62
+ pi.on("resources_discover", () => ({ skillPaths: [skillsDir] }));
73
63
  }
74
- export { PIContextRequiredError } from "./types";
75
64
  export { buildLevelPromptFragment } from "./services/level-prompts";
76
65
  export { validateCompression } from "./services/validator";
77
66
  export async function getActiveLevel(projectRoot) {
78
67
  const state = await loadState(projectRoot);
79
68
  return state.level;
80
69
  }
81
- export async function compressText(input, level, ctx, opts) {
82
- const factoryCtx = {};
83
- if (ctx.modelRegistry !== undefined)
84
- factoryCtx.modelRegistry = ctx.modelRegistry;
85
- if (ctx.signal !== undefined)
86
- factoryCtx.signal = ctx.signal;
87
- const llm = makeLLM(factoryCtx);
88
- return compressTextPipeline({
89
- input,
90
- level,
91
- mode: "file",
92
- llm,
93
- ...(opts?.maxRepairRetries !== undefined ? { maxRepairRetries: opts.maxRepairRetries } : {}),
94
- ...(ctx.signal ? { signal: ctx.signal } : {}),
95
- });
96
- }
97
70
  export function compressTextLexical(input, level) {
98
71
  const compressed = applyLevelLexical(input, level);
99
72
  return { compressed, before: input.length, after: compressed.length };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,3 @@
1
- export { compressTextPipeline } from "./compress-pipeline";
2
- export type { LLMCall, CompressPipelineInput } from "./compress-pipeline";
3
1
  export { buildLevelPromptFragment } from "./level-prompts";
4
2
  export { applyLevelLexical, maskProtectedZones, unmaskProtectedZones } from "./level-rules";
5
3
  export { validateCompression } from "./validator";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,YAAY,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EACN,SAAS,EACT,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,GACb,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EACN,SAAS,EACT,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,GACb,MAAM,eAAe,CAAC"}
@@ -1,4 +1,3 @@
1
- export { compressTextPipeline } from "./compress-pipeline";
2
1
  export { buildLevelPromptFragment } from "./level-prompts";
3
2
  export { applyLevelLexical, maskProtectedZones, unmaskProtectedZones } from "./level-rules";
4
3
  export { validateCompression } from "./validator";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EACN,SAAS,EACT,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,GACb,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EACN,SAAS,EACT,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,GACb,MAAM,eAAe,CAAC"}
@@ -0,0 +1,3 @@
1
+ export type CompletionFilter = (absPath: string, name: string) => boolean;
2
+ export declare function completePath(partial: string, baseDir: string, fileFilter?: CompletionFilter): string[];
3
+ //# sourceMappingURL=path-complete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-complete.d.ts","sourceRoot":"","sources":["../../src/services/path-complete.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;AAS1E,wBAAgB,YAAY,CAC3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,gBAAgB,GAC3B,MAAM,EAAE,CAwCV"}
@@ -0,0 +1,56 @@
1
+ import { readdirSync } from "node:fs";
2
+ import { resolve } from "node:path";
3
+ import { extOf, isSupportedExtension } from "./file-ops";
4
+ // Nested-path completion for .md/.txt/.rst/.markdown files.
5
+ // - Splits `partial` into (dirPart, tail); reads the directory.
6
+ // - Returns subdirectories with a trailing "/" (so tab-completion can drill in)
7
+ // and matching files.
8
+ // - Dotfiles/dotdirs and *.original.md backups are always skipped.
9
+ // - Optional `fileFilter`: called for each candidate file (by absolute path and
10
+ // name); only files returning true are included. Directories are unaffected.
11
+ export function completePath(partial, baseDir, fileFilter) {
12
+ let dirPart;
13
+ let tail;
14
+ const lastSep = partial.lastIndexOf("/");
15
+ if (lastSep === -1) {
16
+ dirPart = "";
17
+ tail = partial;
18
+ }
19
+ else {
20
+ dirPart = partial.slice(0, lastSep + 1);
21
+ tail = partial.slice(lastSep + 1);
22
+ }
23
+ const searchDir = dirPart === "" ? resolve(baseDir) : resolve(baseDir, dirPart);
24
+ let entries;
25
+ try {
26
+ entries = readdirSync(searchDir, { withFileTypes: true, encoding: "utf8" });
27
+ }
28
+ catch {
29
+ return [];
30
+ }
31
+ const results = [];
32
+ for (const entry of entries) {
33
+ if (entry.name.startsWith("."))
34
+ continue;
35
+ if (!entry.name.startsWith(tail))
36
+ continue;
37
+ if (entry.isDirectory()) {
38
+ results.push(`${dirPart}${entry.name}/`);
39
+ continue;
40
+ }
41
+ if (entry.isFile()) {
42
+ if (!isSupportedExtension(extOf(entry.name)))
43
+ continue;
44
+ if (entry.name.endsWith(".original.md"))
45
+ continue;
46
+ if (fileFilter) {
47
+ const absPath = resolve(searchDir, entry.name);
48
+ if (!fileFilter(absPath, entry.name))
49
+ continue;
50
+ }
51
+ results.push(`${dirPart}${entry.name}`);
52
+ }
53
+ }
54
+ return results.sort();
55
+ }
56
+ //# sourceMappingURL=path-complete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-complete.js","sourceRoot":"","sources":["../../src/services/path-complete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,WAAW,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAIzD,4DAA4D;AAC5D,gEAAgE;AAChE,gFAAgF;AAChF,wBAAwB;AACxB,mEAAmE;AACnE,gFAAgF;AAChF,+EAA+E;AAC/E,MAAM,UAAU,YAAY,CAC3B,OAAe,EACf,OAAe,EACf,UAA6B;IAE7B,IAAI,OAAe,CAAC;IACpB,IAAI,IAAY,CAAC;IACjB,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,OAAO,CAAC;IAChB,CAAC;SAAM,CAAC;QACP,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;QACxC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEhF,IAAI,OAAyB,CAAC;IAC9B,IAAI,CAAC;QACJ,OAAO,GAAG,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7E,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,CAAC;IACX,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QACzC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAS;QAC3C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACzC,SAAS;QACV,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACpB,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAAE,SAAS;YACvD,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;gBAAE,SAAS;YAClD,IAAI,UAAU,EAAE,CAAC;gBAChB,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC/C,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC;oBAAE,SAAS;YAChD,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;IACF,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;AACvB,CAAC"}
package/dist/types.d.ts CHANGED
@@ -40,9 +40,6 @@ export interface ValidatorReport {
40
40
  warnings: string[];
41
41
  errors: string[];
42
42
  }
43
- export declare class PIContextRequiredError extends Error {
44
- constructor();
45
- }
46
43
  export declare class InvalidLevelError extends Error {
47
44
  constructor(given: string);
48
45
  }
@@ -55,8 +52,4 @@ export declare class BackupExistsError extends Error {
55
52
  export declare class UnsupportedFileTypeError extends Error {
56
53
  constructor(path: string, reason: string);
57
54
  }
58
- export declare class ValidatorFailedError extends Error {
59
- readonly errors: string[];
60
- constructor(errors: string[]);
61
- }
62
55
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,CAAC;AAEvE,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAEhD,MAAM,MAAM,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC;AAEtC,eAAO,MAAM,UAAU,2DAA4D,CAAC;AACpF,eAAO,MAAM,aAAa,oDAAqD,CAAC;AAEhF,MAAM,WAAW,YAAY;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,yBAAyB,EAAE,MAAM,CAAC;IAClC,eAAe,EAAE,mBAAmB,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,YAAY;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,eAAe;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,qBAAa,sBAAuB,SAAQ,KAAK;;CAKhD;AAED,qBAAa,iBAAkB,SAAQ,KAAK;gBAC/B,KAAK,EAAE,MAAM;CAMzB;AAED,qBAAa,iBAAkB,SAAQ,KAAK;gBAC/B,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CAIvC;AAED,qBAAa,iBAAkB,SAAQ,KAAK;gBAC/B,UAAU,EAAE,MAAM;CAI9B;AAED,qBAAa,wBAAyB,SAAQ,KAAK;gBACtC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAIxC;AAED,qBAAa,oBAAqB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;gBACd,MAAM,EAAE,MAAM,EAAE;CAK5B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,CAAC;AAEvE,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAEhD,MAAM,MAAM,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC;AAEtC,eAAO,MAAM,UAAU,2DAA4D,CAAC;AACpF,eAAO,MAAM,aAAa,oDAAqD,CAAC;AAEhF,MAAM,WAAW,YAAY;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,yBAAyB,EAAE,MAAM,CAAC;IAClC,eAAe,EAAE,mBAAmB,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,YAAY;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,eAAe;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,qBAAa,iBAAkB,SAAQ,KAAK;gBAC/B,KAAK,EAAE,MAAM;CAMzB;AAED,qBAAa,iBAAkB,SAAQ,KAAK;gBAC/B,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CAIvC;AAED,qBAAa,iBAAkB,SAAQ,KAAK;gBAC/B,UAAU,EAAE,MAAM;CAI9B;AAED,qBAAa,wBAAyB,SAAQ,KAAK;gBACtC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAIxC"}
package/dist/types.js CHANGED
@@ -1,11 +1,5 @@
1
1
  export const ALL_LEVELS = ["off", "lite", "standard", "ultra", "symbolic"];
2
2
  export const ACTIVE_LEVELS = ["lite", "standard", "ultra", "symbolic"];
3
- export class PIContextRequiredError extends Error {
4
- constructor() {
5
- super("ultra-compress: PI ExtensionContext is required for LLM-backed operations");
6
- this.name = "PIContextRequiredError";
7
- }
8
- }
9
3
  export class InvalidLevelError extends Error {
10
4
  constructor(given) {
11
5
  super(`ultra-compress: invalid level "${given}" (expected one of: off|lite|standard|ultra|symbolic)`);
@@ -30,12 +24,4 @@ export class UnsupportedFileTypeError extends Error {
30
24
  this.name = "UnsupportedFileTypeError";
31
25
  }
32
26
  }
33
- export class ValidatorFailedError extends Error {
34
- errors;
35
- constructor(errors) {
36
- super(`ultra-compress: validator failed after repair retries — ${errors.join("; ")}`);
37
- this.name = "ValidatorFailedError";
38
- this.errors = errors;
39
- }
40
- }
41
27
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,CAAU,CAAC;AACpF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,CAAU,CAAC;AA0ChF,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAChD;QACC,KAAK,CAAC,2EAA2E,CAAC,CAAC;QACnF,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACtC,CAAC;CACD;AAED,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC3C,YAAY,KAAa;QACxB,KAAK,CACJ,kCAAkC,KAAK,uDAAuD,CAC9F,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IACjC,CAAC;CACD;AAED,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC3C,YAAY,IAAY,EAAE,KAAa;QACtC,KAAK,CAAC,yBAAyB,IAAI,QAAQ,KAAK,qBAAqB,CAAC,CAAC;QACvE,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IACjC,CAAC;CACD;AAED,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC3C,YAAY,UAAkB;QAC7B,KAAK,CAAC,2BAA2B,UAAU,yCAAyC,CAAC,CAAC;QACtF,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IACjC,CAAC;CACD;AAED,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IAClD,YAAY,IAAY,EAAE,MAAc;QACvC,KAAK,CAAC,yCAAyC,IAAI,MAAM,MAAM,EAAE,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACxC,CAAC;CACD;AAED,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IACrC,MAAM,CAAW;IAC1B,YAAY,MAAgB;QAC3B,KAAK,CAAC,2DAA2D,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtF,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;CACD"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,CAAU,CAAC;AACpF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,CAAU,CAAC;AA0ChF,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC3C,YAAY,KAAa;QACxB,KAAK,CACJ,kCAAkC,KAAK,uDAAuD,CAC9F,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IACjC,CAAC;CACD;AAED,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC3C,YAAY,IAAY,EAAE,KAAa;QACtC,KAAK,CAAC,yBAAyB,IAAI,QAAQ,KAAK,qBAAqB,CAAC,CAAC;QACvE,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IACjC,CAAC;CACD;AAED,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC3C,YAAY,UAAkB;QAC7B,KAAK,CAAC,2BAA2B,UAAU,yCAAyC,CAAC,CAAC;QACtF,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IACjC,CAAC;CACD;AAED,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IAClD,YAAY,IAAY,EAAE,MAAc;QACvC,KAAK,CAAC,yCAAyC,IAAI,MAAM,MAAM,EAAE,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACxC,CAAC;CACD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@the-forge-flow/ultra-compress-pi",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "PI extension for token-efficient prose — level-based runtime output compression and markdown file compression",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,12 +0,0 @@
1
- import { type ActiveLevel, type CompressResult, type Mode } from "../types";
2
- export type LLMCall = (prompt: string, signal?: AbortSignal) => Promise<string>;
3
- export interface CompressPipelineInput {
4
- input: string;
5
- level: ActiveLevel;
6
- mode: Mode;
7
- llm: LLMCall;
8
- maxRepairRetries?: number;
9
- signal?: AbortSignal;
10
- }
11
- export declare function compressTextPipeline(opts: CompressPipelineInput): Promise<CompressResult>;
12
- //# sourceMappingURL=compress-pipeline.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compress-pipeline.d.ts","sourceRoot":"","sources":["../../src/services/compress-pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,KAAK,IAAI,EAAwB,MAAM,UAAU,CAAC;AAKlG,MAAM,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAEhF,MAAM,WAAW,qBAAqB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,WAAW,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,GAAG,EAAE,OAAO,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,WAAW,CAAC;CACrB;AAuCD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC,CAyD/F"}
@@ -1,81 +0,0 @@
1
- import { ValidatorFailedError } from "../types";
2
- import { buildLevelPromptFragment } from "./level-prompts";
3
- import { applyLevelLexical, maskProtectedZones, unmaskProtectedZones } from "./level-rules";
4
- import { validateCompression } from "./validator";
5
- const OUTER_FENCE_RE = /^\s*```(?:\w+)?\n([\s\S]*?)\n```\s*$/;
6
- function stripOuterFence(s) {
7
- const m = s.match(OUTER_FENCE_RE);
8
- if (!m)
9
- return s;
10
- // m[1] is guaranteed to exist since OUTER_FENCE_RE has one capture group
11
- // biome-ignore lint/style/noNonNullAssertion: capture group always exists
12
- return m[1];
13
- }
14
- function buildInitialPrompt(maskedPrePass, level, mode) {
15
- const rules = buildLevelPromptFragment(level, mode);
16
- return `${rules}\n\nInput to compress:\n\n${maskedPrePass}`;
17
- }
18
- function buildRepairPrompt(masked, previousOutput, errors, level, mode) {
19
- return `${buildLevelPromptFragment(level, mode)}
20
-
21
- Previous output had these specific errors. DO NOT recompress or rephrase — PATCH ONLY these drifts:
22
-
23
- ${errors.map((e) => `- ${e}`).join("\n")}
24
-
25
- Original masked input:
26
- ${masked}
27
-
28
- Previous attempt:
29
- ${previousOutput}
30
-
31
- Return a corrected version that keeps the level-${level} compression but fixes the listed drifts.`;
32
- }
33
- export async function compressTextPipeline(opts) {
34
- const { input, level, mode, llm, maxRepairRetries = 2, signal } = opts;
35
- const { masked, tokens } = maskProtectedZones(input);
36
- const lexical = applyLevelLexical(masked, level);
37
- const prompt = buildInitialPrompt(lexical, level, mode);
38
- let attempt = 0;
39
- let lastOutput = "";
40
- let lastErrors = [];
41
- const warnings = [];
42
- while (attempt <= maxRepairRetries) {
43
- const raw = attempt === 0
44
- ? await llm(prompt, signal)
45
- : await llm(buildRepairPrompt(lexical, lastOutput, lastErrors, level, mode), signal);
46
- let stripped = stripOuterFence(raw.trim());
47
- // Remove punctuation immediately after protected token references to avoid duplication
48
- stripped = stripped.replace(/⟨PROT:\d+⟩[.,;:!?]/g, (match) => match.slice(0, -1));
49
- lastOutput = stripped;
50
- // Check protected tokens survived the LLM pass BEFORE unmasking, so
51
- // dropped tokens surface as a specific repair signal rather than as
52
- // vague "missing URL" errors downstream.
53
- const missing = [];
54
- for (let i = 0; i < tokens.length; i++) {
55
- if (!stripped.includes(`⟨PROT:${i}⟩`))
56
- missing.push(`⟨PROT:${i}⟩`);
57
- }
58
- if (missing.length > 0) {
59
- lastErrors = [
60
- `dropped protected tokens: ${missing.join(", ")} — these MUST appear verbatim in the output`,
61
- ];
62
- attempt += 1;
63
- continue;
64
- }
65
- const unmasked = unmaskProtectedZones(stripped, tokens);
66
- const report = validateCompression(input, unmasked);
67
- if (report.ok) {
68
- return {
69
- compressed: unmasked,
70
- before: input.length,
71
- after: unmasked.length,
72
- ratio: (input.length - unmasked.length) / input.length,
73
- warnings: [...warnings, ...report.warnings],
74
- };
75
- }
76
- lastErrors = report.errors;
77
- attempt += 1;
78
- }
79
- throw new ValidatorFailedError(lastErrors);
80
- }
81
- //# sourceMappingURL=compress-pipeline.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compress-pipeline.js","sourceRoot":"","sources":["../../src/services/compress-pipeline.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- import type { LLMCall } from "./compress-pipeline";
2
- interface PiModelRegistry {
3
- find(provider: string, model: string): unknown;
4
- getApiKeyAndHeaders(model: unknown): Promise<{
5
- apiKey: string;
6
- headers: Record<string, string>;
7
- }>;
8
- }
9
- export interface LLMFactoryContext {
10
- modelRegistry?: PiModelRegistry;
11
- signal?: AbortSignal;
12
- }
13
- export declare function makeLLM(piCtx: LLMFactoryContext): LLMCall;
14
- export {};
15
- //# sourceMappingURL=llm-factory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"llm-factory.d.ts","sourceRoot":"","sources":["../../src/services/llm-factory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,UAAU,eAAe;IACxB,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/C,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC,CAAC;CAClG;AAED,MAAM,WAAW,iBAAiB;IACjC,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,MAAM,CAAC,EAAE,WAAW,CAAC;CACrB;AAID,wBAAgB,OAAO,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CA0BzD"}
@@ -1,24 +0,0 @@
1
- import { PIContextRequiredError } from "../types";
2
- // Build a live LLMCall bound to the PI session's default model. Throws
3
- // PIContextRequiredError when invoked outside a live PI runtime (no registry).
4
- export function makeLLM(piCtx) {
5
- return async (prompt, signal) => {
6
- if (!piCtx.modelRegistry)
7
- throw new PIContextRequiredError();
8
- const mod = await import("@mariozechner/pi-ai");
9
- const complete = mod.complete;
10
- const model = piCtx.modelRegistry.find("", "");
11
- const auth = await piCtx.modelRegistry.getApiKeyAndHeaders(model);
12
- const resp = await complete(model, { messages: [{ role: "user", content: prompt }] }, {
13
- apiKey: auth.apiKey,
14
- headers: auth.headers,
15
- maxTokens: 8192,
16
- signal: signal ?? piCtx.signal,
17
- });
18
- return resp.content
19
- .filter((c) => c.type === "text")
20
- .map((c) => c.text ?? "")
21
- .join("");
22
- };
23
- }
24
- //# sourceMappingURL=llm-factory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"llm-factory.js","sourceRoot":"","sources":["../../src/services/llm-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAalD,uEAAuE;AACvE,+EAA+E;AAC/E,MAAM,UAAU,OAAO,CAAC,KAAwB;IAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QAC/B,IAAI,CAAC,KAAK,CAAC,aAAa;YAAE,MAAM,IAAI,sBAAsB,EAAE,CAAC;QAC7D,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAChD,MAAM,QAAQ,GACb,GAGA,CAAC,QAAQ,CAAC;QACX,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAC1B,KAAK,EACL,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,EACjD;YACC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,MAAM,IAAI,KAAK,CAAC,MAAM;SAC9B,CACD,CAAC;QACF,OAAO,IAAI,CAAC,OAAO;aACjB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;aAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;aACxB,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,CAAC,CAAC;AACH,CAAC"}