@entelligentsia/forgecli 1.0.2 → 1.0.3

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 (88) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/CHANGELOG-forge-plugin.md +24 -0
  3. package/dist/extensions/forgecli/audience-gate.js +1 -1
  4. package/dist/extensions/forgecli/audience-gate.js.map +1 -1
  5. package/dist/extensions/forgecli/fix-bug.d.ts +1 -2
  6. package/dist/extensions/forgecli/fix-bug.js +678 -609
  7. package/dist/extensions/forgecli/fix-bug.js.map +1 -1
  8. package/dist/extensions/forgecli/forge-artifact-tool.js +15 -3
  9. package/dist/extensions/forgecli/forge-artifact-tool.js.map +1 -1
  10. package/dist/extensions/forgecli/forge-subagent.d.ts +17 -0
  11. package/dist/extensions/forgecli/forge-subagent.js +31 -12
  12. package/dist/extensions/forgecli/forge-subagent.js.map +1 -1
  13. package/dist/extensions/forgecli/forge-tools.d.ts +6 -0
  14. package/dist/extensions/forgecli/forge-tools.js +69 -6
  15. package/dist/extensions/forgecli/forge-tools.js.map +1 -1
  16. package/dist/extensions/forgecli/run-task.js +461 -391
  17. package/dist/extensions/forgecli/run-task.js.map +1 -1
  18. package/dist/extensions/forgecli/session-registry.d.ts +12 -0
  19. package/dist/extensions/forgecli/session-registry.js +23 -0
  20. package/dist/extensions/forgecli/session-registry.js.map +1 -1
  21. package/dist/extensions/forgecli/subagent/caller-context.d.ts +35 -11
  22. package/dist/extensions/forgecli/subagent/caller-context.js +49 -21
  23. package/dist/extensions/forgecli/subagent/caller-context.js.map +1 -1
  24. package/dist/extensions/forgecli/subagent/orchestrator-transcript.d.ts +66 -0
  25. package/dist/extensions/forgecli/subagent/orchestrator-transcript.js +66 -0
  26. package/dist/extensions/forgecli/subagent/orchestrator-transcript.js.map +1 -0
  27. package/dist/extensions/forgecli/subagent/phase-guard.d.ts +34 -0
  28. package/dist/extensions/forgecli/subagent/phase-guard.js +139 -0
  29. package/dist/extensions/forgecli/subagent/phase-guard.js.map +1 -0
  30. package/dist/extensions/forgecli/subagent/phase-summary-map.d.ts +1 -0
  31. package/dist/extensions/forgecli/subagent/phase-summary-map.js +22 -0
  32. package/dist/extensions/forgecli/subagent/phase-summary-map.js.map +1 -0
  33. package/dist/extensions/forgecli/thread-switcher.js +2 -2
  34. package/dist/extensions/forgecli/thread-switcher.js.map +1 -1
  35. package/dist/extensions/forgecli/viewport-events.d.ts +4 -0
  36. package/dist/extensions/forgecli/viewport-events.js +18 -1
  37. package/dist/extensions/forgecli/viewport-events.js.map +1 -1
  38. package/dist/extensions/forgecli/viewport-renderer.d.ts +12 -2
  39. package/dist/extensions/forgecli/viewport-renderer.js +8 -6
  40. package/dist/extensions/forgecli/viewport-renderer.js.map +1 -1
  41. package/dist/forge-payload/.base-pack/workflows/fix_bug.md +10 -28
  42. package/dist/forge-payload/.base-pack/workflows/triage.md +190 -0
  43. package/dist/forge-payload/.claude-plugin/plugin.json +1 -1
  44. package/dist/forge-payload/.schemas/enum-catalog.json +1 -1
  45. package/dist/forge-payload/.schemas/migrations.json +9 -0
  46. package/dist/forge-payload/integrity.json +3 -3
  47. package/dist/forge-payload/meta/fragments/tool-discipline.md +21 -2
  48. package/dist/forge-payload/meta/workflows/meta-bug-triage.md +210 -0
  49. package/dist/forge-payload/meta/workflows/meta-fix-bug.md +10 -28
  50. package/dist/forge-payload/schemas/enum-catalog.json +1 -1
  51. package/dist/forge-payload/schemas/structure-manifest.json +20 -1
  52. package/dist/forge-payload/tools/artifact.cjs +34 -5
  53. package/node_modules/@entelligentsia/forge-compress/dist/compressor.d.ts +6 -0
  54. package/node_modules/@entelligentsia/forge-compress/dist/compressor.js +137 -0
  55. package/node_modules/@entelligentsia/forge-compress/dist/entropy.d.ts +3 -0
  56. package/node_modules/@entelligentsia/forge-compress/dist/entropy.js +99 -0
  57. package/node_modules/@entelligentsia/forge-compress/dist/forge/entity.d.ts +8 -0
  58. package/node_modules/@entelligentsia/forge-compress/dist/forge/entity.js +149 -0
  59. package/node_modules/@entelligentsia/forge-compress/dist/forge/index.d.ts +7 -0
  60. package/node_modules/@entelligentsia/forge-compress/dist/forge/index.js +4 -0
  61. package/node_modules/@entelligentsia/forge-compress/dist/forge/markdown.d.ts +5 -0
  62. package/node_modules/@entelligentsia/forge-compress/dist/forge/markdown.js +92 -0
  63. package/node_modules/@entelligentsia/forge-compress/dist/forge/query.d.ts +7 -0
  64. package/node_modules/@entelligentsia/forge-compress/dist/forge/query.js +60 -0
  65. package/node_modules/@entelligentsia/forge-compress/dist/forge/validate.d.ts +1 -0
  66. package/node_modules/@entelligentsia/forge-compress/dist/forge/validate.js +82 -0
  67. package/node_modules/@entelligentsia/forge-compress/dist/index.d.ts +6 -0
  68. package/node_modules/@entelligentsia/forge-compress/dist/index.js +5 -0
  69. package/node_modules/@entelligentsia/forge-compress/dist/progressive.d.ts +1 -0
  70. package/node_modules/@entelligentsia/forge-compress/dist/progressive.js +108 -0
  71. package/node_modules/@entelligentsia/forge-compress/dist/strip.d.ts +4 -0
  72. package/node_modules/@entelligentsia/forge-compress/dist/strip.js +55 -0
  73. package/node_modules/@entelligentsia/forge-compress/dist/tokens.d.ts +2 -0
  74. package/node_modules/@entelligentsia/forge-compress/dist/tokens.js +17 -0
  75. package/node_modules/@entelligentsia/forge-compress/package.json +45 -0
  76. package/node_modules/@entelligentsia/forge-compress/src/__tests__/compress.test.ts +409 -0
  77. package/node_modules/@entelligentsia/forge-compress/src/compressor.ts +147 -0
  78. package/node_modules/@entelligentsia/forge-compress/src/entropy.ts +105 -0
  79. package/node_modules/@entelligentsia/forge-compress/src/forge/entity.ts +184 -0
  80. package/node_modules/@entelligentsia/forge-compress/src/forge/index.ts +10 -0
  81. package/node_modules/@entelligentsia/forge-compress/src/forge/markdown.ts +122 -0
  82. package/node_modules/@entelligentsia/forge-compress/src/forge/query.ts +105 -0
  83. package/node_modules/@entelligentsia/forge-compress/src/forge/validate.ts +86 -0
  84. package/node_modules/@entelligentsia/forge-compress/src/index.ts +22 -0
  85. package/node_modules/@entelligentsia/forge-compress/src/progressive.ts +123 -0
  86. package/node_modules/@entelligentsia/forge-compress/src/strip.ts +58 -0
  87. package/node_modules/@entelligentsia/forge-compress/src/tokens.ts +19 -0
  88. package/package.json +5 -10
@@ -0,0 +1,58 @@
1
+ const ANSI_RE = /\x1b\[[0-9;]*[a-zA-Z]/g;
2
+
3
+ export function stripAnsi(s: string): string {
4
+ if (!s.includes("\x1b")) return s;
5
+ return s.replace(ANSI_RE, "");
6
+ }
7
+
8
+ const TS_RE =
9
+ /\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})?/g;
10
+ const HASH_RE = /\b[0-9a-f]{32,64}\b/g;
11
+
12
+ export function stripTimestampsAndHashes(line: string): string {
13
+ return line.replace(TS_RE, "[TS]").replace(HASH_RE, "[HASH]");
14
+ }
15
+
16
+ export function normalizeWhitespace(line: string): string {
17
+ let result = "";
18
+ let prevSpace = false;
19
+ for (const ch of line) {
20
+ if (ch === " " || ch === "\t") {
21
+ if (!prevSpace) {
22
+ result += " ";
23
+ prevSpace = true;
24
+ }
25
+ } else {
26
+ result += ch;
27
+ prevSpace = false;
28
+ }
29
+ }
30
+ return result;
31
+ }
32
+
33
+ const BOILERPLATE_PREFIXES = [
34
+ "copyright",
35
+ "licensed under",
36
+ "license:",
37
+ "all rights reserved",
38
+ "generated by",
39
+ "auto-generated",
40
+ ];
41
+
42
+ const SEPARATOR_CHARS = new Set(["=", "-", "*", "─", "━"]);
43
+
44
+ export function isBoilerplate(line: string): boolean {
45
+ const lower = line.toLowerCase();
46
+ if (BOILERPLATE_PREFIXES.some((p) => lower.startsWith(p))) return true;
47
+ if (line.length >= 4) {
48
+ const first = line[0];
49
+ if (SEPARATOR_CHARS.has(first)) {
50
+ let same = 0;
51
+ for (const c of line) {
52
+ if (c === first) same++;
53
+ }
54
+ if (same / line.length > 0.8) return true;
55
+ }
56
+ }
57
+ return false;
58
+ }
@@ -0,0 +1,19 @@
1
+ const CHARS_PER_TOKEN = 3.7;
2
+
3
+ export function countTokens(text: string): number {
4
+ if (!text) return 0;
5
+ return Math.ceil(text.length / CHARS_PER_TOKEN);
6
+ }
7
+
8
+ export function truncateToTokenBudget(
9
+ text: string,
10
+ maxTokens: number,
11
+ ): string {
12
+ if (maxTokens <= 0) return "";
13
+ if (countTokens(text) <= maxTokens) return text;
14
+ const charBudget = Math.floor(maxTokens * CHARS_PER_TOKEN);
15
+ const truncated = text.slice(0, charBudget);
16
+ const lastNewline = truncated.lastIndexOf("\n");
17
+ const clean = lastNewline > 0 ? truncated.slice(0, lastNewline) : truncated;
18
+ return `${clean} …`;
19
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@entelligentsia/forgecli",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "Forge SDLC ported onto @earendil-works/pi-coding-agent \u2014 production launcher with three bin aliases (forge/forgecli/4ge). Bundles a curated fork of pi-coding-agent vendored under earendil-works names.",
5
5
  "license": "MIT",
6
6
  "author": "Entelligentsia",
@@ -71,6 +71,7 @@
71
71
  "@earendil-works/pi-agent-core",
72
72
  "@earendil-works/pi-ai",
73
73
  "@earendil-works/pi-tui",
74
+ "@entelligentsia/forge-compress",
74
75
  "js-yaml"
75
76
  ],
76
77
  "dependencies": {
@@ -80,6 +81,7 @@
80
81
  "@earendil-works/pi-tui": "file:./vendor-pi/earendil-works-pi-tui-0.75.5.tgz",
81
82
  "ajv": "^8.20.0",
82
83
  "js-yaml": "^4.1.0",
84
+ "@entelligentsia/forge-compress": "file:../forge-compress",
83
85
  "lunr": "2.3.9",
84
86
  "typebox": "^1.1.24"
85
87
  },
@@ -97,12 +99,5 @@
97
99
  },
98
100
  "engines": {
99
101
  "node": ">=20.6.0"
100
- },
101
- "bundleDependencies": [
102
- "@earendil-works/pi-coding-agent",
103
- "@earendil-works/pi-agent-core",
104
- "@earendil-works/pi-ai",
105
- "@earendil-works/pi-tui",
106
- "js-yaml"
107
- ]
108
- }
102
+ }
103
+ }