@entelligentsia/forgecli 1.0.14 → 1.0.20

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 (62) hide show
  1. package/CHANGELOG.md +142 -0
  2. package/dist/CHANGELOG-forge-plugin.md +61 -0
  3. package/dist/extensions/forgecli/config-layer.d.ts +0 -16
  4. package/dist/extensions/forgecli/config-layer.js +0 -5
  5. package/dist/extensions/forgecli/config-layer.js.map +1 -1
  6. package/dist/extensions/forgecli/context-governor-compaction.d.ts +83 -0
  7. package/dist/extensions/forgecli/context-governor-compaction.js +302 -0
  8. package/dist/extensions/forgecli/context-governor-compaction.js.map +1 -0
  9. package/dist/extensions/forgecli/context-governor.d.ts +173 -0
  10. package/dist/extensions/forgecli/context-governor.js +618 -0
  11. package/dist/extensions/forgecli/context-governor.js.map +1 -0
  12. package/dist/extensions/forgecli/dashboard/component.d.ts +7 -4
  13. package/dist/extensions/forgecli/dashboard/component.js +80 -101
  14. package/dist/extensions/forgecli/dashboard/component.js.map +1 -1
  15. package/dist/extensions/forgecli/dashboard/register.js +7 -21
  16. package/dist/extensions/forgecli/dashboard/register.js.map +1 -1
  17. package/dist/extensions/forgecli/dashboard/theme.d.ts +27 -0
  18. package/dist/extensions/forgecli/dashboard/theme.js +91 -0
  19. package/dist/extensions/forgecli/dashboard/theme.js.map +1 -0
  20. package/dist/extensions/forgecli/fix-bug.js +59 -5
  21. package/dist/extensions/forgecli/fix-bug.js.map +1 -1
  22. package/dist/extensions/forgecli/forge-artifact-tool.js +2 -1
  23. package/dist/extensions/forgecli/forge-artifact-tool.js.map +1 -1
  24. package/dist/extensions/forgecli/forge-cli-schema.json +0 -4
  25. package/dist/extensions/forgecli/forge-subagent.d.ts +20 -1
  26. package/dist/extensions/forgecli/forge-subagent.js +17 -3
  27. package/dist/extensions/forgecli/forge-subagent.js.map +1 -1
  28. package/dist/extensions/forgecli/forge-tools.js +3 -1
  29. package/dist/extensions/forgecli/forge-tools.js.map +1 -1
  30. package/dist/extensions/forgecli/hook-dispatcher.d.ts +3 -1
  31. package/dist/extensions/forgecli/hook-dispatcher.js +37 -3
  32. package/dist/extensions/forgecli/hook-dispatcher.js.map +1 -1
  33. package/dist/extensions/forgecli/index.js +33 -1
  34. package/dist/extensions/forgecli/index.js.map +1 -1
  35. package/dist/extensions/forgecli/lib/halt-advisor.d.ts +19 -14
  36. package/dist/extensions/forgecli/lib/halt-advisor.js +36 -13
  37. package/dist/extensions/forgecli/lib/halt-advisor.js.map +1 -1
  38. package/dist/extensions/forgecli/orchestrator-status-bar.d.ts +3 -2
  39. package/dist/extensions/forgecli/orchestrator-status-bar.js +90 -60
  40. package/dist/extensions/forgecli/orchestrator-status-bar.js.map +1 -1
  41. package/dist/extensions/forgecli/run-sprint.d.ts +3 -1
  42. package/dist/extensions/forgecli/run-sprint.js +1 -0
  43. package/dist/extensions/forgecli/run-sprint.js.map +1 -1
  44. package/dist/extensions/forgecli/run-task.d.ts +34 -1
  45. package/dist/extensions/forgecli/run-task.js +144 -6
  46. package/dist/extensions/forgecli/run-task.js.map +1 -1
  47. package/dist/extensions/forgecli/thread-switcher.d.ts +4 -1
  48. package/dist/extensions/forgecli/thread-switcher.js +36 -21
  49. package/dist/extensions/forgecli/thread-switcher.js.map +1 -1
  50. package/dist/forge-payload/.base-pack/workflows/implement_plan.md +9 -0
  51. package/dist/forge-payload/.base-pack/workflows/plan_task.md +7 -0
  52. package/dist/forge-payload/.base-pack/workflows/review_code.md +4 -3
  53. package/dist/forge-payload/.base-pack/workflows/review_plan.md +4 -3
  54. package/dist/forge-payload/.base-pack/workflows/validate_task.md +4 -3
  55. package/dist/forge-payload/.claude-plugin/plugin.json +1 -1
  56. package/dist/forge-payload/.schemas/migrations.json +132 -27
  57. package/dist/forge-payload/meta/workflows/meta-review-implementation.md +4 -3
  58. package/dist/forge-payload/meta/workflows/meta-review-plan.md +4 -3
  59. package/dist/forge-payload/meta/workflows/meta-validate.md +4 -3
  60. package/dist/forge-payload/tools/collate.cjs +32 -0
  61. package/dist/forge-payload/tools/postflight-gate.cjs +56 -10
  62. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-governor-compaction.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/context-governor-compaction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,173 @@
1
+ import type { ExtensionContext, ExtensionFactory, ToolCallEvent, ToolCallEventResult, ToolResultEvent } from "@earendil-works/pi-coding-agent";
2
+ import type { ModelRegistry } from "@earendil-works/pi-coding-agent";
3
+ /**
4
+ * Return type for tool_result pi handlers — matches ToolResultEventResult from
5
+ * @earendil-works/pi-coding-agent (not exported from the package root).
6
+ * Structural equivalence is sufficient for TypeScript assignability.
7
+ */
8
+ export interface ToolResultEventResult {
9
+ content?: Array<{
10
+ type: "text";
11
+ text: string;
12
+ } | {
13
+ type: "image";
14
+ source: unknown;
15
+ }>;
16
+ details?: unknown;
17
+ isError?: boolean;
18
+ }
19
+ /**
20
+ * Policy for a single persona/phase combination.
21
+ *
22
+ * residentFields — names of task/sprint record fields that are always retained
23
+ * in context (not trimmed by Mechanism A).
24
+ * toolBudgets — per-tool soft token budget caps (keyed by tool name).
25
+ * T04 reads these when deciding how aggressively to trim tool_result content.
26
+ * steerThreshold — fraction of contextWindow at which Mechanism B fires a
27
+ * budget-steer note (0–1; e.g. 0.80 = steer when 80% of window is used).
28
+ */
29
+ export interface PhasePolicy {
30
+ residentFields: string[];
31
+ toolBudgets: Record<string, number>;
32
+ steerThreshold: number;
33
+ }
34
+ /**
35
+ * Lookup table keyed by `"${persona}/${phase}"` (e.g. `"architect/plan"`,
36
+ * `"engineer/review"`) plus a `"default"` entry for unknown combinations.
37
+ */
38
+ export type PhasePolicyTable = Record<string, PhasePolicy>;
39
+ /**
40
+ * Governor interface wired into hook-dispatcher.ts.
41
+ * T03: both methods return undefined/void (no-op). T04 supplies live curation
42
+ * logic via createGovernor.
43
+ *
44
+ * MUST NOT throw — IL7. Any internal failure must return undefined silently.
45
+ */
46
+ export interface ContextGovernor {
47
+ /**
48
+ * Called after the triage-error block in the tool_result handler.
49
+ * Return a ToolResultEventResult to replace the event content, or undefined
50
+ * to pass through unchanged.
51
+ */
52
+ applyToolResult(event: ToolResultEvent, ctx: ExtensionContext): ToolResultEventResult | undefined;
53
+ /**
54
+ * Called at the tail of the tool_call handler (after all existing guards).
55
+ * Return a ToolCallEventResult to block or modify the call, or undefined/void
56
+ * to pass through unchanged.
57
+ */
58
+ applyToolCall(event: ToolCallEvent, ctx: ExtensionContext): ToolCallEventResult | void;
59
+ }
60
+ /**
61
+ * Returns a ContextGovernor whose methods are pure pass-throughs.
62
+ * Used as the default in registerHookDispatcher so existing callers that do
63
+ * not pass a governor see zero behavioural change.
64
+ */
65
+ export declare function createNoOpGovernor(): ContextGovernor;
66
+ /** Fallback context window when neither ctx.model nor modelRegistry can supply one. */
67
+ export declare const DEFAULT_CONTEXT_WINDOW = 200000;
68
+ /**
69
+ * Create a governor backed by the given policy table and model registry.
70
+ *
71
+ * Implements Mechanism A curation rules (T04):
72
+ * Rule 1 — Dedup/reference-ize
73
+ * Rule 2 — Schema-trim (forge_store results)
74
+ * Rule 3 — Span-clamp (bash/grep/find/read results)
75
+ *
76
+ * Implements Mechanism B (T05):
77
+ * Budget meter: per-turn ctx.getContextUsage() → ctx.ui.setStatus("forge:ctx-budget", ...)
78
+ * Steer: one-shot note at policy.steerThreshold, injected via steerFn
79
+ *
80
+ * Implements Mechanism C (T06):
81
+ * Checkpoint-and-shed: forge_store results for summarized entities are evicted
82
+ * and replaced with an eviction pointer; unsummarized material is retained.
83
+ * Shed criterion: summarySentinel(phaseKey, entityId) returns true.
84
+ *
85
+ * @param table Phase-policy table (keyed by "persona/phase").
86
+ * @param _modelRegistry Model registry (fallback contextWindow resolution only).
87
+ * @param steerFn Optional callback injected at construction by registerHookDispatcher.
88
+ * Receives the steer message string; called at most once per governor
89
+ * instance (single-fire invariant). Callers that omit this see no steer.
90
+ * @param summarySentinel Optional read-only probe injected at construction (Mechanism C / T06).
91
+ * Receives (phaseKey, entityId); returns true when a {PHASE}-SUMMARY.json
92
+ * has been durably written for that entity. When true, the forge_store result
93
+ * is replaced with an eviction pointer. Callers that omit this param see no
94
+ * shedding (backwards-compatible; undefined default).
95
+ * The sentinel MUST NOT write to .forge/store/ or the summary itself (Pack 07).
96
+ * Errors inside the sentinel are silently caught and cause retain, not eviction (IL7).
97
+ *
98
+ * contextWindow resolution order (provider-neutral):
99
+ * 1. usage.contextWindow from ctx.getContextUsage() — direct, when available
100
+ * 2. ctx.model?.contextWindow — active model
101
+ * 3. ctx.modelRegistry.find(provider, modelId)?.contextWindow — registry backup
102
+ * 4. DEFAULT_CONTEXT_WINDOW (200_000) — conservative fallback
103
+ * @param compactFn opt callback injected at construction (Mechanism E / T09).
104
+ * Called proactively once when fraction >= policy.steerThreshold,
105
+ * via a single-fire `compactFired` flag distinct from `steerFired`.
106
+ * Callers pass `compactFn = () => session.compact()`. Errors inside
107
+ * compactFn are caught and written to stderr (IL7). Omitting this
108
+ * param is backwards-compatible — no compact trigger fires.
109
+ * @param phaseKey opt construction-time phase key override ("persona/role").
110
+ * Production paths MUST pass this (via buildGovernorFactory) —
111
+ * pi never populates persona/phase on ExtensionContext, so the
112
+ * ctx probe always resolves "default" at runtime. Omitting it
113
+ * preserves the legacy ctx-probe behaviour (test harnesses).
114
+ */
115
+ export declare function createGovernor(table: PhasePolicyTable, _modelRegistry: ModelRegistry, steerFn?: (message: string) => void, summarySentinel?: (phaseKey: string, entityId: string) => boolean, compactFn?: () => void, phaseKey?: string): ContextGovernor;
116
+ /**
117
+ * Load the built-in phase-policy table.
118
+ *
119
+ * Ships an entry for every governed run-task PHASE_PIPELINE key
120
+ * (`${personaNoun}/${role}` — engineer/plan, supervisor/review-plan,
121
+ * engineer/implement, supervisor/review-code, qa-engineer/validate,
122
+ * architect/approve) plus "default" for any unlisted persona/phase.
123
+ * writeback/commit intentionally stay on "default" — small phases whose
124
+ * git/store output must not be clamped.
125
+ *
126
+ * `read` budgets are deliberately more generous than `bash` — clamping file
127
+ * reads too tightly degrades implement/review quality (the agent cannot see
128
+ * whole files), while bash output (store-cli reads, test logs, greps) is the
129
+ * dominant context bloat observed in the CART-S02-T03 baseline.
130
+ *
131
+ * Legacy design-time keys ("architect/plan", "engineer/review") are retained
132
+ * for existing test fixtures; the pipeline never produces them.
133
+ *
134
+ * Values are conservative design-time decisions; a future task can promote
135
+ * specific fields to project config once per-project tuning evidence exists.
136
+ */
137
+ export declare function loadDefaultPolicyTable(): PhasePolicyTable;
138
+ /** Options for buildGovernorFactory. */
139
+ export interface GovernorFactoryOptions {
140
+ /**
141
+ * Pipeline phase key, `${personaNoun}/${role}` (e.g. "supervisor/review-code").
142
+ * Known to run-task.ts at dispatch time; injected here because pi never
143
+ * populates persona/phase on ExtensionContext.
144
+ */
145
+ phaseKey: string;
146
+ /** Project cwd — root containing `.forge/store/` (sentinel reads only). */
147
+ cwd: string;
148
+ }
149
+ /**
150
+ * Build an ExtensionFactory that registers a fully-wired context governor in a
151
+ * subagent session. Constructed per-phase by run-task.ts (which knows the
152
+ * persona/role) and passed via RunSubagentOptions.extensionFactories —
153
+ * the same injection channel as buildForgeCompactionFactory (Mechanism E).
154
+ *
155
+ * This is the production wiring the original FORGE-S30-T07 integration missed:
156
+ * registerHookDispatcher(pi, …, governor) in index.ts only governs the PARENT
157
+ * session, while every phase runs in an isolated createAgentSession subagent
158
+ * that the parent's hooks never see. The CART-S02-T03 benchmark confirmed the
159
+ * result: zero curation markers across a full FORGE_CTX_GOVERNOR=1 phase.
160
+ *
161
+ * Wiring supplied here:
162
+ * phaseKey — construction-time (Mechanism D policies finally reachable)
163
+ * steerFn — pi.sendUserMessage(msg, { deliverAs: "steer" }) (Mechanism B)
164
+ * summarySentinel — storeSummarySentinel against .forge/store/ (Mechanism C)
165
+ * compactFn — ctx.compact() proactive trigger (Mechanism E)
166
+ *
167
+ * steer uses the session-scoped ExtensionAPI directly; compact rides the
168
+ * ExtensionContext captured at the start of each handler invocation — it only
169
+ * fires synchronously inside applyToolResult, so the captured ctx is always
170
+ * the live one. All callbacks are guarded: failures fall through silently
171
+ * (IL7); the factory never writes to .forge/store/ (Pack 07).
172
+ */
173
+ export declare function buildGovernorFactory(opts: GovernorFactoryOptions): ExtensionFactory;