@entelligentsia/forgecli 0.6.6 → 0.7.6
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.
- package/CHANGELOG.md +88 -0
- package/README.md +28 -1
- package/dist/bin/forge.js +20 -0
- package/dist/bin/forge.js.map +1 -1
- package/dist/extensions/forgecli/approve.d.ts +24 -0
- package/dist/extensions/forgecli/approve.js +202 -0
- package/dist/extensions/forgecli/approve.js.map +1 -0
- package/dist/extensions/forgecli/audience-gate.d.ts +4 -0
- package/dist/extensions/forgecli/audience-gate.js +8 -5
- package/dist/extensions/forgecli/audience-gate.js.map +1 -1
- package/dist/extensions/forgecli/collate.d.ts +24 -0
- package/dist/extensions/forgecli/collate.js +199 -0
- package/dist/extensions/forgecli/collate.js.map +1 -0
- package/dist/extensions/forgecli/commit.d.ts +24 -0
- package/dist/extensions/forgecli/commit.js +202 -0
- package/dist/extensions/forgecli/commit.js.map +1 -0
- package/dist/extensions/forgecli/fix-bug.d.ts +75 -0
- package/dist/extensions/forgecli/fix-bug.js +1133 -0
- package/dist/extensions/forgecli/fix-bug.js.map +1 -0
- package/dist/extensions/forgecli/forge-commands.js +7 -0
- package/dist/extensions/forgecli/forge-commands.js.map +1 -1
- package/dist/extensions/forgecli/forge-init.js +16 -8
- package/dist/extensions/forgecli/forge-init.js.map +1 -1
- package/dist/extensions/forgecli/forge-subagent.d.ts +29 -0
- package/dist/extensions/forgecli/forge-subagent.js +14 -1
- package/dist/extensions/forgecli/forge-subagent.js.map +1 -1
- package/dist/extensions/forgecli/hook-dispatcher.d.ts +53 -1
- package/dist/extensions/forgecli/hook-dispatcher.js +47 -1
- package/dist/extensions/forgecli/hook-dispatcher.js.map +1 -1
- package/dist/extensions/forgecli/hooks/post-init-hook.d.ts +15 -0
- package/dist/extensions/forgecli/hooks/post-init-hook.js +127 -0
- package/dist/extensions/forgecli/hooks/post-init-hook.js.map +1 -0
- package/dist/extensions/forgecli/hooks/post-sprint-hook.d.ts +37 -0
- package/dist/extensions/forgecli/hooks/post-sprint-hook.js +166 -0
- package/dist/extensions/forgecli/hooks/post-sprint-hook.js.map +1 -0
- package/dist/extensions/forgecli/index.js +47 -0
- package/dist/extensions/forgecli/index.js.map +1 -1
- package/dist/extensions/forgecli/review-code.d.ts +24 -0
- package/dist/extensions/forgecli/review-code.js +202 -0
- package/dist/extensions/forgecli/review-code.js.map +1 -0
- package/dist/extensions/forgecli/review-plan.d.ts +24 -0
- package/dist/extensions/forgecli/review-plan.js +203 -0
- package/dist/extensions/forgecli/review-plan.js.map +1 -0
- package/dist/extensions/forgecli/run-sprint.d.ts +18 -0
- package/dist/extensions/forgecli/run-sprint.js +33 -1
- package/dist/extensions/forgecli/run-sprint.js.map +1 -1
- package/dist/extensions/forgecli/run-task.d.ts +21 -2
- package/dist/extensions/forgecli/run-task.js +33 -9
- package/dist/extensions/forgecli/run-task.js.map +1 -1
- package/dist/extensions/forgecli/session-registry.d.ts +10 -0
- package/dist/extensions/forgecli/session-registry.js +9 -0
- package/dist/extensions/forgecli/session-registry.js.map +1 -1
- package/dist/extensions/forgecli/validate.d.ts +24 -0
- package/dist/extensions/forgecli/validate.js +202 -0
- package/dist/extensions/forgecli/validate.js.map +1 -0
- package/dist/extensions/forgecli/wf-engine/engine.d.ts +23 -0
- package/dist/extensions/forgecli/wf-engine/engine.js +384 -0
- package/dist/extensions/forgecli/wf-engine/engine.js.map +1 -0
- package/dist/extensions/forgecli/wf-engine/event-parser.d.ts +6 -0
- package/dist/extensions/forgecli/wf-engine/event-parser.js +29 -0
- package/dist/extensions/forgecli/wf-engine/event-parser.js.map +1 -0
- package/dist/extensions/forgecli/wf-engine/id-gen.d.ts +6 -0
- package/dist/extensions/forgecli/wf-engine/id-gen.js +17 -0
- package/dist/extensions/forgecli/wf-engine/id-gen.js.map +1 -0
- package/dist/extensions/forgecli/wf-engine/loader.d.ts +2 -0
- package/dist/extensions/forgecli/wf-engine/loader.js +100 -0
- package/dist/extensions/forgecli/wf-engine/loader.js.map +1 -0
- package/dist/extensions/forgecli/wf-engine/predicate.d.ts +7 -0
- package/dist/extensions/forgecli/wf-engine/predicate.js +36 -0
- package/dist/extensions/forgecli/wf-engine/predicate.js.map +1 -0
- package/dist/extensions/forgecli/wf-engine/prompt-compiler.d.ts +15 -0
- package/dist/extensions/forgecli/wf-engine/prompt-compiler.js +23 -0
- package/dist/extensions/forgecli/wf-engine/prompt-compiler.js.map +1 -0
- package/dist/extensions/forgecli/wf-engine/register.d.ts +9 -0
- package/dist/extensions/forgecli/wf-engine/register.js +59 -0
- package/dist/extensions/forgecli/wf-engine/register.js.map +1 -0
- package/dist/extensions/forgecli/wf-engine/remit-check.d.ts +6 -0
- package/dist/extensions/forgecli/wf-engine/remit-check.js +42 -0
- package/dist/extensions/forgecli/wf-engine/remit-check.js.map +1 -0
- package/dist/extensions/forgecli/wf-engine/state-store.d.ts +13 -0
- package/dist/extensions/forgecli/wf-engine/state-store.js +43 -0
- package/dist/extensions/forgecli/wf-engine/state-store.js.map +1 -0
- package/dist/extensions/forgecli/wf-engine/types.d.ts +66 -0
- package/dist/extensions/forgecli/wf-engine/types.js +2 -0
- package/dist/extensions/forgecli/wf-engine/types.js.map +1 -0
- package/dist/extensions/forgecli/wf-engine/worker.d.ts +11 -0
- package/dist/extensions/forgecli/wf-engine/worker.js +50 -0
- package/dist/extensions/forgecli/wf-engine/worker.js.map +1 -0
- package/dist/forge-payload/.base-pack/workflows/_fragments/context-injection.md +10 -4
- package/dist/forge-payload/.base-pack/workflows/fix_bug.md +12 -0
- package/dist/forge-payload/.schemas/bug.schema.json +4 -2
- package/dist/forge-payload/.schemas/event.schema.json +22 -3
- package/dist/forge-payload/commands/add-pipeline.md +342 -0
- package/dist/forge-payload/commands/add-task.md +269 -0
- package/dist/forge-payload/commands/ask.md +43 -0
- package/dist/forge-payload/commands/calibrate.md +356 -0
- package/dist/forge-payload/commands/config.md +202 -0
- package/dist/forge-payload/commands/enhance.md +38 -0
- package/dist/forge-payload/commands/health.md +225 -0
- package/dist/forge-payload/commands/init.md +165 -0
- package/dist/forge-payload/commands/materialize.md +119 -0
- package/dist/forge-payload/commands/migrate.md +160 -0
- package/dist/forge-payload/commands/quiz-agent.md +38 -0
- package/dist/forge-payload/commands/regenerate.md +673 -0
- package/dist/forge-payload/commands/remove.md +174 -0
- package/dist/forge-payload/commands/report-bug.md +191 -0
- package/dist/forge-payload/commands/store-query.md +73 -0
- package/dist/forge-payload/commands/store-repair.md +187 -0
- package/dist/forge-payload/commands/update-tools.md +56 -0
- package/dist/forge-payload/commands/update.md +1376 -0
- package/dist/forge-payload/tools/preflight-gate.cjs +2 -1
- package/dist/forge-payload/tools/read-verdict.cjs +41 -8
- package/dist/forge-payload/tools/store-cli.cjs +4 -3
- package/node_modules/argparse/CHANGELOG.md +216 -0
- package/node_modules/argparse/LICENSE +254 -0
- package/node_modules/argparse/README.md +84 -0
- package/node_modules/argparse/argparse.js +3707 -0
- package/node_modules/argparse/lib/sub.js +67 -0
- package/node_modules/argparse/lib/textwrap.js +440 -0
- package/node_modules/argparse/package.json +31 -0
- package/node_modules/cliui/CHANGELOG.md +121 -0
- package/node_modules/color-convert/CHANGELOG.md +54 -0
- package/node_modules/esprima/ChangeLog +235 -0
- package/node_modules/js-yaml/LICENSE +21 -0
- package/node_modules/js-yaml/README.md +247 -0
- package/node_modules/js-yaml/bin/js-yaml.js +126 -0
- package/node_modules/js-yaml/dist/js-yaml.js +3880 -0
- package/node_modules/js-yaml/dist/js-yaml.min.js +2 -0
- package/node_modules/js-yaml/dist/js-yaml.mjs +3856 -0
- package/node_modules/js-yaml/index.js +47 -0
- package/node_modules/js-yaml/lib/common.js +59 -0
- package/node_modules/js-yaml/lib/dumper.js +965 -0
- package/node_modules/js-yaml/lib/exception.js +55 -0
- package/node_modules/js-yaml/lib/loader.js +1733 -0
- package/node_modules/js-yaml/lib/schema/core.js +11 -0
- package/node_modules/js-yaml/lib/schema/default.js +22 -0
- package/node_modules/js-yaml/lib/schema/failsafe.js +17 -0
- package/node_modules/js-yaml/lib/schema/json.js +19 -0
- package/node_modules/js-yaml/lib/schema.js +121 -0
- package/node_modules/js-yaml/lib/snippet.js +101 -0
- package/node_modules/js-yaml/lib/type/binary.js +125 -0
- package/node_modules/js-yaml/lib/type/bool.js +35 -0
- package/node_modules/js-yaml/lib/type/float.js +97 -0
- package/node_modules/js-yaml/lib/type/int.js +156 -0
- package/node_modules/js-yaml/lib/type/map.js +8 -0
- package/node_modules/js-yaml/lib/type/merge.js +12 -0
- package/node_modules/js-yaml/lib/type/null.js +35 -0
- package/node_modules/js-yaml/lib/type/omap.js +44 -0
- package/node_modules/js-yaml/lib/type/pairs.js +53 -0
- package/node_modules/js-yaml/lib/type/seq.js +8 -0
- package/node_modules/js-yaml/lib/type/set.js +29 -0
- package/node_modules/js-yaml/lib/type/str.js +8 -0
- package/node_modules/js-yaml/lib/type/timestamp.js +88 -0
- package/node_modules/js-yaml/lib/type.js +66 -0
- package/node_modules/js-yaml/package.json +66 -0
- package/node_modules/mz/HISTORY.md +66 -0
- package/node_modules/proper-lockfile/CHANGELOG.md +108 -0
- package/node_modules/source-map/CHANGELOG.md +301 -0
- package/node_modules/thenify/History.md +11 -0
- package/node_modules/thenify-all/History.md +11 -0
- package/node_modules/y18n/CHANGELOG.md +100 -0
- package/node_modules/yargs/CHANGELOG.md +88 -0
- package/node_modules/yargs-parser/CHANGELOG.md +263 -0
- package/package.json +6 -2
- package/workflows/lead-qualifier/prompts/digest.md +44 -0
- package/workflows/lead-qualifier/prompts/draft-outreach.md +44 -0
- package/workflows/lead-qualifier/prompts/enrich.md +52 -0
- package/workflows/lead-qualifier/prompts/intake.md +48 -0
- package/workflows/lead-qualifier/prompts/mark-cold.md +38 -0
- package/workflows/lead-qualifier/prompts/score.md +45 -0
- package/workflows/lead-qualifier/workflow.yaml +95 -0
- package/workflows/research-brief/prompts/brief-synthesize.md +43 -0
- package/workflows/research-brief/prompts/intake.md +51 -0
- package/workflows/research-brief/prompts/source-critique.md +38 -0
- package/workflows/research-brief/prompts/source-score.md +38 -0
- package/workflows/research-brief/prompts/source-summarize.md +54 -0
- package/workflows/research-brief/workflow.yaml +66 -0
- package/dist/extensions/forgecli/session-monitor-widget.d.ts +0 -37
- package/dist/extensions/forgecli/session-monitor-widget.js +0 -320
- package/dist/extensions/forgecli/session-monitor-widget.js.map +0 -1
- package/dist/extensions/forgecli/session-monitor.d.ts +0 -2
- package/dist/extensions/forgecli/session-monitor.js +0 -135
- package/dist/extensions/forgecli/session-monitor.js.map +0 -1
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
// session-monitor.ts — register /forge:sessions slash command and Ctrl+Shift+S
|
|
2
|
-
// shortcut that toggle the session-monitor widget below the input swimline.
|
|
3
|
-
//
|
|
4
|
-
// Focus model: pi keeps keyboard focus on the editor when an extension widget
|
|
5
|
-
// is mounted via setWidget(). To route arrow keys / Tab / Esc to the widget
|
|
6
|
-
// while it is open, we install a ctx.ui.onTerminalInput handler that consumes
|
|
7
|
-
// those keys and forwards them to the widget's handleInput. Letter keys and
|
|
8
|
-
// Enter pass through to the editor so the user can still type and submit
|
|
9
|
-
// prompts while monitoring sessions.
|
|
10
|
-
import { Key } from "@entelligentsia/pi-tui";
|
|
11
|
-
import { buildSessionMonitorWidget, } from "./session-monitor-widget.js";
|
|
12
|
-
const WIDGET_KEY = "forge-sessions";
|
|
13
|
-
// Process-global state. The slash command and the shortcut share one toggle
|
|
14
|
-
// state; pi only paints one widget per key at a time.
|
|
15
|
-
let isOpen = false;
|
|
16
|
-
let widgetRef;
|
|
17
|
-
let unsubscribeInput;
|
|
18
|
-
// Keys that should always route to the widget while it is open.
|
|
19
|
-
function isWidgetKey(data) {
|
|
20
|
-
if (data === "")
|
|
21
|
-
return true; // bare Esc
|
|
22
|
-
if (data === "\t")
|
|
23
|
-
return true; // Tab
|
|
24
|
-
if (data === "[A" || data === "OA")
|
|
25
|
-
return true; // up
|
|
26
|
-
if (data === "[B" || data === "OB")
|
|
27
|
-
return true; // down
|
|
28
|
-
if (data === "[C" || data === "OC")
|
|
29
|
-
return true; // right
|
|
30
|
-
if (data === "[D" || data === "OD")
|
|
31
|
-
return true; // left
|
|
32
|
-
if (data === "[H" || data === "[F")
|
|
33
|
-
return true; // Home / End
|
|
34
|
-
if (data === "[5~" || data === "[6~")
|
|
35
|
-
return true; // PgUp / PgDn
|
|
36
|
-
return false;
|
|
37
|
-
}
|
|
38
|
-
function closeWidget(ctx) {
|
|
39
|
-
unsubscribeInput?.();
|
|
40
|
-
unsubscribeInput = undefined;
|
|
41
|
-
widgetRef = undefined;
|
|
42
|
-
ctx.ui.setWidget(WIDGET_KEY, undefined);
|
|
43
|
-
isOpen = false;
|
|
44
|
-
}
|
|
45
|
-
function toggle(ctx) {
|
|
46
|
-
if (isOpen) {
|
|
47
|
-
closeWidget(ctx);
|
|
48
|
-
ctx.ui.notify("forge:sessions closed", "info");
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
ctx.ui.notify("forge:sessions opening…", "info");
|
|
52
|
-
if (process.env.FORGE_SESSIONS_PROBE === "1") {
|
|
53
|
-
// Plain string[] form — confirms whether widgets render at all in this
|
|
54
|
-
// pi build. Set FORGE_SESSIONS_PROBE=1 before launching forge to use.
|
|
55
|
-
ctx.ui.setWidget(WIDGET_KEY, [
|
|
56
|
-
"── Forge Sessions (probe) ──────────────────────────",
|
|
57
|
-
" This is the string[] form of setWidget.",
|
|
58
|
-
" If you see this, widgets render.",
|
|
59
|
-
" Press /forge:sessions again to close.",
|
|
60
|
-
], { placement: "belowEditor" });
|
|
61
|
-
isOpen = true;
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
try {
|
|
65
|
-
const factory = buildSessionMonitorWidget({
|
|
66
|
-
requestRender: () => {
|
|
67
|
-
// pi re-renders widgets on its own tick when they emit lines from
|
|
68
|
-
// render(); the SessionRegistry "change" listener calls
|
|
69
|
-
// invalidate() on the SelectLists inside the widget.
|
|
70
|
-
},
|
|
71
|
-
onClose: () => {
|
|
72
|
-
closeWidget(ctx);
|
|
73
|
-
},
|
|
74
|
-
onMount: (w) => {
|
|
75
|
-
widgetRef = w;
|
|
76
|
-
},
|
|
77
|
-
});
|
|
78
|
-
ctx.ui.setWidget(WIDGET_KEY, factory, { placement: "belowEditor" });
|
|
79
|
-
isOpen = true;
|
|
80
|
-
// Install raw input interceptor so arrow keys / Tab / Esc reach the
|
|
81
|
-
// widget instead of the editor. Letter keys & Enter pass through.
|
|
82
|
-
unsubscribeInput = ctx.ui.onTerminalInput((data) => {
|
|
83
|
-
if (!widgetRef || !isOpen)
|
|
84
|
-
return undefined;
|
|
85
|
-
if (!isWidgetKey(data))
|
|
86
|
-
return undefined;
|
|
87
|
-
try {
|
|
88
|
-
widgetRef.handleInput(data);
|
|
89
|
-
}
|
|
90
|
-
catch (err) {
|
|
91
|
-
const e = err;
|
|
92
|
-
process.stderr.write(`[forge:sessions] widget.handleInput threw: ${e.message ?? "unknown"}\n`);
|
|
93
|
-
}
|
|
94
|
-
return { consume: true };
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
catch (err) {
|
|
98
|
-
const e = err;
|
|
99
|
-
ctx.ui.notify(`forge:sessions failed to mount: ${e.message ?? "unknown"}\n${e.stack ?? ""}`, "error");
|
|
100
|
-
isOpen = false;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
export function registerSessionMonitor(pi) {
|
|
104
|
-
process.stderr.write("[forge:sessions] registerSessionMonitor: registering command + shortcut\n");
|
|
105
|
-
pi.registerCommand("forge:sessions", {
|
|
106
|
-
description: "Toggle the Forge session monitor: live list of run-task subagent sessions " +
|
|
107
|
-
"with per-event details. Below the input. Shortcut: Ctrl+Shift+S. " +
|
|
108
|
-
"While open: ↑↓ navigate, Tab/→ switch panes, Esc closes.",
|
|
109
|
-
async handler(_args, ctx) {
|
|
110
|
-
process.stderr.write("[forge:sessions] command handler invoked\n");
|
|
111
|
-
try {
|
|
112
|
-
toggle(ctx);
|
|
113
|
-
}
|
|
114
|
-
catch (err) {
|
|
115
|
-
const e = err;
|
|
116
|
-
process.stderr.write(`[forge:sessions] handler threw: ${e.message ?? "unknown"}\n${e.stack ?? ""}\n`);
|
|
117
|
-
try {
|
|
118
|
-
ctx.ui.notify(`forge:sessions handler threw: ${e.message ?? "unknown"}`, "error");
|
|
119
|
-
}
|
|
120
|
-
catch {
|
|
121
|
-
/* notify itself failed; stderr line above is the durable trace */
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
},
|
|
125
|
-
});
|
|
126
|
-
// Ctrl+L is reserved by pi (terminal clear). Use Ctrl+Shift+S — unbound by
|
|
127
|
-
// default in pi and unlikely to clash with shell/terminal muscle memory.
|
|
128
|
-
pi.registerShortcut(Key.ctrlShift("s"), {
|
|
129
|
-
description: "Toggle Forge session monitor",
|
|
130
|
-
handler: (ctx) => {
|
|
131
|
-
toggle(ctx);
|
|
132
|
-
},
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
//# sourceMappingURL=session-monitor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-monitor.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/session-monitor.ts"],"names":[],"mappings":"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"}
|