@entelligentsia/forgecli 0.8.4 → 0.9.1
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 +61 -0
- package/README.md +165 -2
- package/dist/bin/argv.d.ts +2 -2
- package/dist/bin/argv.js +17 -0
- package/dist/bin/argv.js.map +1 -1
- package/dist/bin/config.d.ts +69 -0
- package/dist/bin/config.js +315 -0
- package/dist/bin/config.js.map +1 -0
- package/dist/bin/doctor.d.ts +1 -0
- package/dist/bin/doctor.js +12 -0
- package/dist/bin/doctor.js.map +1 -1
- package/dist/bin/forge.js +7 -0
- package/dist/bin/forge.js.map +1 -1
- package/dist/extensions/forgecli/config-command.d.ts +8 -0
- package/dist/extensions/forgecli/config-command.js +66 -0
- package/dist/extensions/forgecli/config-command.js.map +1 -0
- package/dist/extensions/forgecli/config-layer.d.ts +38 -0
- package/dist/extensions/forgecli/config-layer.js +68 -0
- package/dist/extensions/forgecli/config-layer.js.map +1 -0
- package/dist/extensions/forgecli/config-tui/component.d.ts +35 -0
- package/dist/extensions/forgecli/config-tui/component.js +236 -0
- package/dist/extensions/forgecli/config-tui/component.js.map +1 -0
- package/dist/extensions/forgecli/config-tui/handler.d.ts +40 -0
- package/dist/extensions/forgecli/config-tui/handler.js +240 -0
- package/dist/extensions/forgecli/config-tui/handler.js.map +1 -0
- package/dist/extensions/forgecli/config-tui/index.d.ts +5 -0
- package/dist/extensions/forgecli/config-tui/index.js +5 -0
- package/dist/extensions/forgecli/config-tui/index.js.map +1 -0
- package/dist/extensions/forgecli/config-tui/keys.d.ts +26 -0
- package/dist/extensions/forgecli/config-tui/keys.js +33 -0
- package/dist/extensions/forgecli/config-tui/keys.js.map +1 -0
- package/dist/extensions/forgecli/config-tui/plugin-config-reader.d.ts +23 -0
- package/dist/extensions/forgecli/config-tui/plugin-config-reader.js +58 -0
- package/dist/extensions/forgecli/config-tui/plugin-config-reader.js.map +1 -0
- package/dist/extensions/forgecli/config-tui/screens/advanced-menu.d.ts +7 -0
- package/dist/extensions/forgecli/config-tui/screens/advanced-menu.js +83 -0
- package/dist/extensions/forgecli/config-tui/screens/advanced-menu.js.map +1 -0
- package/dist/extensions/forgecli/config-tui/screens/confirm-quit.d.ts +11 -0
- package/dist/extensions/forgecli/config-tui/screens/confirm-quit.js +54 -0
- package/dist/extensions/forgecli/config-tui/screens/confirm-quit.js.map +1 -0
- package/dist/extensions/forgecli/config-tui/screens/override-editor.d.ts +11 -0
- package/dist/extensions/forgecli/config-tui/screens/override-editor.js +233 -0
- package/dist/extensions/forgecli/config-tui/screens/override-editor.js.map +1 -0
- package/dist/extensions/forgecli/config-tui/screens/overrides-list-phases.d.ts +7 -0
- package/dist/extensions/forgecli/config-tui/screens/overrides-list-phases.js +91 -0
- package/dist/extensions/forgecli/config-tui/screens/overrides-list-phases.js.map +1 -0
- package/dist/extensions/forgecli/config-tui/screens/overrides-list.d.ts +7 -0
- package/dist/extensions/forgecli/config-tui/screens/overrides-list.js +71 -0
- package/dist/extensions/forgecli/config-tui/screens/overrides-list.js.map +1 -0
- package/dist/extensions/forgecli/config-tui/screens/persona-editor.d.ts +10 -0
- package/dist/extensions/forgecli/config-tui/screens/persona-editor.js +182 -0
- package/dist/extensions/forgecli/config-tui/screens/persona-editor.js.map +1 -0
- package/dist/extensions/forgecli/config-tui/screens/persona-picker.d.ts +7 -0
- package/dist/extensions/forgecli/config-tui/screens/persona-picker.js +76 -0
- package/dist/extensions/forgecli/config-tui/screens/persona-picker.js.map +1 -0
- package/dist/extensions/forgecli/config-tui/screens/personas-list.d.ts +7 -0
- package/dist/extensions/forgecli/config-tui/screens/personas-list.js +98 -0
- package/dist/extensions/forgecli/config-tui/screens/personas-list.js.map +1 -0
- package/dist/extensions/forgecli/config-tui/screens/shared.d.ts +29 -0
- package/dist/extensions/forgecli/config-tui/screens/shared.js +100 -0
- package/dist/extensions/forgecli/config-tui/screens/shared.js.map +1 -0
- package/dist/extensions/forgecli/config-tui/screens/show-resolved.d.ts +23 -0
- package/dist/extensions/forgecli/config-tui/screens/show-resolved.js +128 -0
- package/dist/extensions/forgecli/config-tui/screens/show-resolved.js.map +1 -0
- package/dist/extensions/forgecli/config-tui/screens/tier-menu.d.ts +7 -0
- package/dist/extensions/forgecli/config-tui/screens/tier-menu.js +135 -0
- package/dist/extensions/forgecli/config-tui/screens/tier-menu.js.map +1 -0
- package/dist/extensions/forgecli/config-tui/screens/tier-picker.d.ts +9 -0
- package/dist/extensions/forgecli/config-tui/screens/tier-picker.js +122 -0
- package/dist/extensions/forgecli/config-tui/screens/tier-picker.js.map +1 -0
- package/dist/extensions/forgecli/config-tui/screens/types.d.ts +24 -0
- package/dist/extensions/forgecli/config-tui/screens/types.js +5 -0
- package/dist/extensions/forgecli/config-tui/screens/types.js.map +1 -0
- package/dist/extensions/forgecli/config-tui/screens.d.ts +24 -0
- package/dist/extensions/forgecli/config-tui/screens.js +78 -0
- package/dist/extensions/forgecli/config-tui/screens.js.map +1 -0
- package/dist/extensions/forgecli/config-tui/state/buffer.d.ts +11 -0
- package/dist/extensions/forgecli/config-tui/state/buffer.js +91 -0
- package/dist/extensions/forgecli/config-tui/state/buffer.js.map +1 -0
- package/dist/extensions/forgecli/config-tui/state/constants.d.ts +4 -0
- package/dist/extensions/forgecli/config-tui/state/constants.js +14 -0
- package/dist/extensions/forgecli/config-tui/state/constants.js.map +1 -0
- package/dist/extensions/forgecli/config-tui/state/index.d.ts +6 -0
- package/dist/extensions/forgecli/config-tui/state/index.js +9 -0
- package/dist/extensions/forgecli/config-tui/state/index.js.map +1 -0
- package/dist/extensions/forgecli/config-tui/state/init.d.ts +2 -0
- package/dist/extensions/forgecli/config-tui/state/init.js +30 -0
- package/dist/extensions/forgecli/config-tui/state/init.js.map +1 -0
- package/dist/extensions/forgecli/config-tui/state/model.d.ts +192 -0
- package/dist/extensions/forgecli/config-tui/state/model.js +4 -0
- package/dist/extensions/forgecli/config-tui/state/model.js.map +1 -0
- package/dist/extensions/forgecli/config-tui/state/reducer.d.ts +2 -0
- package/dist/extensions/forgecli/config-tui/state/reducer.js +212 -0
- package/dist/extensions/forgecli/config-tui/state/reducer.js.map +1 -0
- package/dist/extensions/forgecli/config-tui/state/selectors.d.ts +91 -0
- package/dist/extensions/forgecli/config-tui/state/selectors.js +231 -0
- package/dist/extensions/forgecli/config-tui/state/selectors.js.map +1 -0
- package/dist/extensions/forgecli/config-tui/state.d.ts +6 -0
- package/dist/extensions/forgecli/config-tui/state.js +11 -0
- package/dist/extensions/forgecli/config-tui/state.js.map +1 -0
- package/dist/extensions/forgecli/config-tui/theme.d.ts +37 -0
- package/dist/extensions/forgecli/config-tui/theme.js +88 -0
- package/dist/extensions/forgecli/config-tui/theme.js.map +1 -0
- package/dist/extensions/forgecli/config-tui/tier-meta.d.ts +28 -0
- package/dist/extensions/forgecli/config-tui/tier-meta.js +69 -0
- package/dist/extensions/forgecli/config-tui/tier-meta.js.map +1 -0
- package/dist/extensions/forgecli/config-writer.d.ts +16 -0
- package/dist/extensions/forgecli/config-writer.js +63 -0
- package/dist/extensions/forgecli/config-writer.js.map +1 -0
- package/dist/extensions/forgecli/fix-bug.js +85 -1
- package/dist/extensions/forgecli/fix-bug.js.map +1 -1
- package/dist/extensions/forgecli/forge-cli-schema.json +54 -0
- package/dist/extensions/forgecli/forge-commands.js +3 -8
- package/dist/extensions/forgecli/forge-commands.js.map +1 -1
- package/dist/extensions/forgecli/forge-subagent.d.ts +13 -0
- package/dist/extensions/forgecli/forge-subagent.js +19 -0
- package/dist/extensions/forgecli/forge-subagent.js.map +1 -1
- package/dist/extensions/forgecli/index.js +16 -0
- package/dist/extensions/forgecli/index.js.map +1 -1
- package/dist/extensions/forgecli/input-router.d.ts +33 -0
- package/dist/extensions/forgecli/input-router.js +133 -0
- package/dist/extensions/forgecli/input-router.js.map +1 -0
- package/dist/extensions/forgecli/model-resolver.d.ts +32 -0
- package/dist/extensions/forgecli/model-resolver.js +65 -0
- package/dist/extensions/forgecli/model-resolver.js.map +1 -0
- package/dist/extensions/forgecli/model-validator.d.ts +29 -0
- package/dist/extensions/forgecli/model-validator.js +107 -0
- package/dist/extensions/forgecli/model-validator.js.map +1 -0
- package/dist/extensions/forgecli/run-sprint.js +59 -0
- package/dist/extensions/forgecli/run-sprint.js.map +1 -1
- package/dist/extensions/forgecli/run-task.js +93 -1
- package/dist/extensions/forgecli/run-task.js.map +1 -1
- package/dist/extensions/forgecli/thread-switcher.js +5 -2
- package/dist/extensions/forgecli/thread-switcher.js.map +1 -1
- package/dist/extensions/forgecli/whats-new-widget.js +5 -2
- package/dist/extensions/forgecli/whats-new-widget.js.map +1 -1
- package/package.json +11 -3
- package/dist/extensions/forgecli/review-command.d.ts +0 -2
- package/dist/extensions/forgecli/review-command.js +0 -184
- package/dist/extensions/forgecli/review-command.js.map +0 -1
- package/dist/forge-payload/.tools/banners.cjs +0 -435
- package/dist/forge-payload/.tools/build-context-pack.cjs +0 -290
- package/dist/forge-payload/.tools/build-init-context.cjs +0 -322
- package/dist/forge-payload/.tools/build-overlay.cjs +0 -326
- package/dist/forge-payload/.tools/build-persona-pack.cjs +0 -226
- package/dist/forge-payload/.tools/collate.cjs +0 -1041
- package/dist/forge-payload/.tools/generation-manifest.cjs +0 -311
- package/dist/forge-payload/.tools/lib/forge-root.cjs +0 -59
- package/dist/forge-payload/.tools/lib/paths.cjs +0 -29
- package/dist/forge-payload/.tools/lib/pricing.cjs +0 -165
- package/dist/forge-payload/.tools/lib/project-root.cjs +0 -32
- package/dist/forge-payload/.tools/lib/result.js +0 -40
- package/dist/forge-payload/.tools/lib/store-facade.cjs +0 -162
- package/dist/forge-payload/.tools/lib/store-nlp.cjs +0 -250
- package/dist/forge-payload/.tools/lib/store-query-exec.cjs +0 -272
- package/dist/forge-payload/.tools/lib/validate.js +0 -141
- package/dist/forge-payload/.tools/manage-config.cjs +0 -340
- package/dist/forge-payload/.tools/manage-versions.cjs +0 -365
- package/dist/forge-payload/.tools/package.json +0 -3
- package/dist/forge-payload/.tools/parse-gates.cjs +0 -151
- package/dist/forge-payload/.tools/parse-verdict.cjs +0 -67
- package/dist/forge-payload/.tools/preflight-gate.cjs +0 -350
- package/dist/forge-payload/.tools/prompts/sprint-plan-prompt.md +0 -70
- package/dist/forge-payload/.tools/schemas/task-list.schema.json +0 -53
- package/dist/forge-payload/.tools/seed-store.cjs +0 -237
- package/dist/forge-payload/.tools/store-cli.cjs +0 -1226
- package/dist/forge-payload/.tools/store-query.cjs +0 -319
- package/dist/forge-payload/.tools/store.cjs +0 -315
- package/dist/forge-payload/.tools/substitute-placeholders.cjs +0 -625
- package/dist/forge-payload/.tools/validate-store.cjs +0 -593
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "forge-cli config",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"additionalProperties": false,
|
|
6
|
+
"definitions": {
|
|
7
|
+
"personaModel": {
|
|
8
|
+
"type": "object",
|
|
9
|
+
"required": ["provider", "model"],
|
|
10
|
+
"additionalProperties": false,
|
|
11
|
+
"properties": {
|
|
12
|
+
"provider": { "type": "string", "description": "pi provider id (anthropic, openai, google, ollama, openrouter, …)" },
|
|
13
|
+
"model": { "type": "string", "description": "exact pi model id within that provider" },
|
|
14
|
+
"description": { "type": "string" }
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"personaModelsMap": {
|
|
18
|
+
"type": "object",
|
|
19
|
+
"description": "persona name → {provider, model}. Names must match the Forge persona catalogue read from forge-cli's bundled vendored plugin (forge-cli/forge/personas/*.md). A reserved 'default' key applies to any persona without an entry.",
|
|
20
|
+
"additionalProperties": { "$ref": "#/definitions/personaModel" }
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"properties": {
|
|
24
|
+
"persona-models": { "$ref": "#/definitions/personaModelsMap" },
|
|
25
|
+
"pipelines": {
|
|
26
|
+
"type": "object",
|
|
27
|
+
"description": "Per-pipeline overrides. Pipeline names match the Forge plugin's pipeline catalogue.",
|
|
28
|
+
"additionalProperties": {
|
|
29
|
+
"type": "object",
|
|
30
|
+
"additionalProperties": false,
|
|
31
|
+
"properties": {
|
|
32
|
+
"persona-models": { "$ref": "#/definitions/personaModelsMap" },
|
|
33
|
+
"phases": {
|
|
34
|
+
"type": "object",
|
|
35
|
+
"description": "Per-phase overrides keyed by role (e.g. 'implement', 'commit'). Roles must match the plugin's pipeline definition.",
|
|
36
|
+
"additionalProperties": {
|
|
37
|
+
"type": "object",
|
|
38
|
+
"additionalProperties": false,
|
|
39
|
+
"properties": {
|
|
40
|
+
"model-override": {
|
|
41
|
+
"description": "L4 — atomic per-phase override. Either a persona-models key by name (string) or an inline {provider, model}.",
|
|
42
|
+
"oneOf": [
|
|
43
|
+
{ "type": "string" },
|
|
44
|
+
{ "$ref": "#/definitions/personaModel" }
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -94,14 +94,9 @@ export function registerForgeCommands(pi, options) {
|
|
|
94
94
|
},
|
|
95
95
|
});
|
|
96
96
|
// ── /forge:config ─────────────────────────────────────────────────────────
|
|
97
|
-
pi.
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
if (!forgeRoot)
|
|
101
|
-
return outsideProjectNoOp("config", ctx);
|
|
102
|
-
await delegateMarkdownCommand(pi, forgeRoot, "config", args, ctx);
|
|
103
|
-
},
|
|
104
|
-
});
|
|
97
|
+
// Real handler registered via registerConfigCommand(pi) in index.ts
|
|
98
|
+
// (Plan 16 Slice 4a). The slot stays in EXPLICITLY_REGISTERED_NAMES so the
|
|
99
|
+
// auto-stub loop in registerAllForgeCommands does not re-register a stub.
|
|
105
100
|
// ── /forge:ask ────────────────────────────────────────────────────────────
|
|
106
101
|
// Tomoshibi entry point. The before_agent_start handler picks up the gate
|
|
107
102
|
// and injects the persona as the system prompt for one turn. /forge:ask
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forge-commands.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/forge-commands.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"forge-commands.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/forge-commands.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,EAAE;AACF,4DAA4D;AAC5D,iEAAiE;AACjE,sEAAsE;AACtE,qEAAqE;AACrE,qEAAqE;AACrE,qEAAqE;AACrE,wCAAwC;AACxC,iEAAiE;AACjE,wDAAwD;AACxD,EAAE;AACF,mEAAmE;AACnE,iEAAiE;AACjE,wEAAwE;AACxE,EAAE;AACF,qEAAqE;AACrE,wEAAwE;AACxE,sEAAsE;AACtE,oDAAoD;AAEpD,OAAO,KAAK,MAAM,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,sDAAsD;AACtD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAS/F,+DAA+D;AAC/D,uEAAuE;AACvE,uEAAuE;AACvE,2BAA2B;AAC3B,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAC7B,IAAI,qBAAqB,GAAkB,IAAI,CAAC;AAEhD,SAAS,mBAAmB;IAC3B,gBAAgB,GAAG,KAAK,CAAC;IACzB,qBAAqB,GAAG,IAAI,CAAC;AAC9B,CAAC;AAED,oFAAoF;AACpF,SAAS,kBAAkB,CAAC,WAAmB,EAAE,GAA4B;IAC5E,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,WAAW,0DAA0D,EAAE,SAAS,CAAC,CAAC;AAC1G,CAAC;AAED,gFAAgF;AAChF,0EAA0E;AAC1E,yEAAyE;AACzE,kEAAkE;AAClE,KAAK,UAAU,uBAAuB,CACrC,EAAgB,EAChB,SAAiB,EACjB,WAAmB,EACnB,IAAY,EACZ,GAA4B;IAE5B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,GAAG,WAAW,KAAK,CAAC,CAAC;IACnE,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACJ,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,GAA0C,CAAC;QACrD,kFAAkF;QAClF,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzB,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC3F,CAAC;QACD,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,WAAW,qBAAqB,IAAI,KAAK,CAAC,CAAC,OAAO,IAAI,eAAe,EAAE,EAAE,OAAO,CAAC,CAAC;QACzG,OAAO;IACR,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,WAAW,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,WAAW,EAAE,CAAC;IAClG,EAAE,CAAC,eAAe,CAAC,GAAG,UAAU,OAAO,IAAI,EAAE,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,EAAgB,EAAE,OAAwB;IAC/E,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAE3C,6EAA6E;IAC7E,2EAA2E;IAC3E,wEAAwE;IACxE,oBAAoB;IACpB,EAAE,CAAC,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;QACtC,IAAI,CAAC,gBAAgB;YAAE,OAAO;QAC9B,gBAAgB,GAAG,KAAK,CAAC;QACzB,IAAI,qBAAqB,KAAK,IAAI,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;YACpD,IAAI,CAAC;gBACJ,qBAAqB,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACzD,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACvB,MAAM,CAAC,GAAG,GAA2B,CAAC;gBACtC,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC,OAAO,IAAI,eAAe,EAAE,CAAC,CAAC;gBAC7F,OAAO;YACR,CAAC;QACF,CAAC;QACD,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAC7E,EAAE,CAAC,eAAe,CAAC,cAAc,EAAE;QAClC,WAAW,EAAE,kFAAkF;QAC/F,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG;YACtB,IAAI,CAAC,SAAS;gBAAE,OAAO,kBAAkB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACzD,MAAM,uBAAuB,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACnE,CAAC;KACD,CAAC,CAAC;IAEH,6EAA6E;IAC7E,oEAAoE;IACpE,2EAA2E;IAC3E,0EAA0E;IAE1E,6EAA6E;IAC7E,0EAA0E;IAC1E,wEAAwE;IACxE,0EAA0E;IAC1E,0EAA0E;IAC1E,EAAE,CAAC,eAAe,CAAC,WAAW,EAAE;QAC/B,WAAW,EAAE,2EAA2E;QACxF,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI;YACvB,gBAAgB,GAAG,IAAI,CAAC;YACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wEAAwE,CAAC;YACvG,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;QACnG,CAAC;KACD,CAAC,CAAC;IAEH,yEAAyE;IACzE,iEAAiE;IAEjE,6EAA6E;IAC7E,2EAA2E;IAC3E,gEAAgE;IAChE,EAAE,CAAC,eAAe,CAAC,cAAc,EAAE;QAClC,WAAW,EAAE,gCAAgC;QAC7C,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG;YACtB,IAAI,CAAC,SAAS;gBAAE,OAAO,kBAAkB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACzD,IAAI,CAAC;gBACJ,MAAM,uBAAuB,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YACnE,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACvB,MAAM,CAAC,GAAG,GAAwB,CAAC;gBACnC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACzB,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,8EAA8E;wBAC7E,4BAA4B,EAC7B,MAAM,CACN,CAAC;oBACF,OAAO;gBACR,CAAC;gBACD,MAAM,GAAG,CAAC;YACX,CAAC;QACF,CAAC;KACD,CAAC,CAAC;AACJ,CAAC;AAED,6EAA6E;AAC7E,wEAAwE;AACxE,0EAA0E;AAC1E,2EAA2E;AAC3E,yEAAyE;AACzE,qDAAqD;AACrD,EAAE;AACF,kFAAkF;AAClF,gEAAgE;AAEhE,yFAAyF;AACzF,SAAS,gBAAgB,CAAC,OAAe;IACxC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACtC,IAAI,GAAG,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACpC,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACxC,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM;YAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,aAAa;YAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACvD,CAAC;IACD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;AAC9B,CAAC;AAED;;;;GAIG;AACH,MAAM,2BAA2B,GAAG,IAAI,GAAG,CAAC;IAC3C,YAAY;IACZ,cAAc;IACd,WAAW;IACX,cAAc;IACd,cAAc;IACd,cAAc;IACd,wBAAwB;IACxB,eAAe;IACf,YAAY,EAAE,oDAAoD;IAClE,iBAAiB,EAAE,yDAAyD;IAC5E,qBAAqB,EAAE,6DAA6D;IACpF,mBAAmB,EAAE,2DAA2D;IAChF,YAAY,EAAE,sCAAsC;IACpD,gBAAgB,EAAE,wDAAwD;IAC1E,kBAAkB,EAAE,0DAA0D;IAC9E,eAAe,EAAK,uDAAuD;IAC3E,mBAAmB,EAAE,gEAAgE;IACrF,mBAAmB,EAAE,gEAAgE;IACrF,eAAe,EAAM,4DAA4D;IACjF,cAAc,EAAO,2DAA2D;IAChF,gBAAgB,EAAK,6DAA6D;IAClF,eAAe,EAAM,4DAA4D;IACjF,eAAe,EAAE,+DAA+D;IAChF,kBAAkB,EAAE,2FAA2F;CAC/G,CAAC,CAAC;AAEH,+EAA+E;AAC/E,yDAAyD;AACzD,MAAM,aAAa,GAAG,2BAA2B,CAAC;AAWlD;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,EAAgB,EAAE,OAA2B;IACrF,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;IAEnF,IAAI,YAAsB,CAAC;IAC3B,IAAI,CAAC;QACJ,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACjF,CAAC;IAAC,MAAM,CAAC;QACR,6CAA6C;QAC7C,OAAO,CAAC,CAAC;IACV,CAAC;IAED,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YACJ,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACR,SAAS;QACV,CAAC;QAED,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI;YAAE,SAAS;QAEpB,MAAM,WAAW,GAAG,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC;QAEzC,gDAAgD;QAChD,IAAI,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC;YAAE,SAAS;QAE7C,gBAAgB;QAChB,MAAM,YAAY,GAAG,WAAW,CAAC;QACjC,EAAE,CAAC,eAAe,CAAC,YAAY,EAAE;YAChC,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,UAAU,IAAI,CAAC,IAAI,EAAE;YACtD,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG;gBACvB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,YAAY,iCAAiC,EAAE,MAAM,CAAC,CAAC;YAC3E,CAAC;SACD,CAAC,CAAC;QAEH,UAAU,EAAE,CAAC;IACd,CAAC;IAED,+DAA+D;IAC/D,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACjD,EAAE,CAAC,eAAe,CAAC,wBAAwB,EAAE;QAC5C,WAAW,EAAE,gEAAgE;QAC7E,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG;YACvB,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,wBAAwB,EAAE,sBAAsB,CAAC,CAAC;YACrE,IAAI,CAAC;gBACJ,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC;gBACpD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACnC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBAC5B,CAAC;gBACD,IAAI,MAAM,CAAC,YAAY,KAAK,CAAC,IAAI,MAAM,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;oBAC1D,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,0EAA0E,EAAE,MAAM,CAAC,CAAC;gBACnG,CAAC;YACF,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACvB,MAAM,CAAC,GAAG,GAA2B,CAAC;gBACtC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,OAAO,IAAI,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC;YACnF,CAAC;oBAAS,CAAC;gBACV,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAC;YACzD,CAAC;QACF,CAAC;KACD,CAAC,CAAC;IAEH,4EAA4E;IAC5E,0EAA0E;IAC1E,4EAA4E;IAC5E,wCAAwC;IACxC,EAAE;IACF,yEAAyE;IACzE,sEAAsE;IACtE,sEAAsE;IACtE,oEAAoE;IACpE,EAAE;IACF,0EAA0E;IAC1E,yEAAyE;IACzE,gEAAgE;IAChE,yDAAyD;IACzD,8BAA8B;IAE9B,OAAO,UAAU,CAAC;AACnB,CAAC;AAED,gFAAgF;AAChF,uEAAuE;AACvE,MAAM,CAAC,MAAM,QAAQ,GAAG;IACvB,mBAAmB;IACnB,mBAAmB,EAAE,GAAG,EAAE,CAAC,gBAAgB;IAC3C,gBAAgB;IAChB,aAAa;IACb,2BAA2B;CAC3B,CAAC"}
|
|
@@ -39,6 +39,19 @@ export interface RunSubagentOptions {
|
|
|
39
39
|
* with "Cannot find module '/tools/store-cli.cjs'".
|
|
40
40
|
*/
|
|
41
41
|
forgeRoot?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Per-phase model routing (Plan 16 Slice 2). When set, forge-cli calls
|
|
44
|
+
* `session.agent.setModel(registry.find(provider, model))` after session
|
|
45
|
+
* creation. If the model isn't in the registry, or setModel throws, the
|
|
46
|
+
* phase falls through to inherit pi's current model — no crash.
|
|
47
|
+
*
|
|
48
|
+
* result.model / result.provider always reflect what the stream returned
|
|
49
|
+
* (not this field) — IL10 emit path reads runtime telemetry, not the request.
|
|
50
|
+
*/
|
|
51
|
+
requestedModel?: {
|
|
52
|
+
provider: string;
|
|
53
|
+
model: string;
|
|
54
|
+
};
|
|
42
55
|
onEvent?: (event: AgentSessionEvent) => void;
|
|
43
56
|
/**
|
|
44
57
|
* Optional tag included in the auto-exported transcript filename for
|
|
@@ -119,6 +119,25 @@ export async function runForgeSubagent(opts) {
|
|
|
119
119
|
if (opts.streamFn) {
|
|
120
120
|
session.agent.streamFn = opts.streamFn;
|
|
121
121
|
}
|
|
122
|
+
// ── Model routing (Plan 16 Slice 2) ──────────────────────────────────
|
|
123
|
+
// Apply requestedModel via the async setter. Falls through to inherit on
|
|
124
|
+
// any failure — never crashes the phase. result.model/provider are read
|
|
125
|
+
// from the stream after the fact (IL10 invariant preserved).
|
|
126
|
+
if (opts.requestedModel) {
|
|
127
|
+
const m = modelRegistry.find(opts.requestedModel.provider, opts.requestedModel.model);
|
|
128
|
+
if (m) {
|
|
129
|
+
try {
|
|
130
|
+
await session.setModel(m);
|
|
131
|
+
}
|
|
132
|
+
catch (err) {
|
|
133
|
+
const e = err;
|
|
134
|
+
process.stderr.write(`[forge-subagent] setModel failed for ${opts.requestedModel.provider}:${opts.requestedModel.model} (non-fatal, inheriting pi current model): ${e.message ?? "unknown"}\n`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
process.stderr.write(`[forge-subagent] requestedModel not in registry: ${opts.requestedModel.provider}:${opts.requestedModel.model} — inheriting pi current model\n`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
122
141
|
// ── terminate channel ────────────────────────────────────────────────
|
|
123
142
|
const onAbort = () => {
|
|
124
143
|
void session.abort();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forge-subagent.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/forge-subagent.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,EAAE;AACF,0CAA0C;AAC1C,4DAA4D;AAC5D,oFAAoF;AACpF,uDAAuD;AACvD,EAAE;AACF,8EAA8E;AAC9E,6EAA6E;AAC7E,oCAAoC;AACpC,EAAE;AACF,iFAAiF;AACjF,mFAAmF;AACnF,EAAE;AACF,aAAa;AACb,6DAA6D;AAC7D,4EAA4E;AAE5E,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EACN,WAAW,EACX,kBAAkB,EAClB,qBAAqB,EACrB,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,cAAc,GAEd,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"forge-subagent.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/forge-subagent.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,6 +47,8 @@ import { registerApprove } from "./approve.js";
|
|
|
47
47
|
import { registerCommit } from "./commit.js";
|
|
48
48
|
import { registerValidate } from "./validate.js";
|
|
49
49
|
import { registerCollate } from "./collate.js";
|
|
50
|
+
import { registerConfigCommand } from "./config-command.js";
|
|
51
|
+
import { getInputRouter } from "./input-router.js";
|
|
50
52
|
import { registerTestOrchestrate } from "./test-orchestrate.js";
|
|
51
53
|
import { registerThreadSwitcher } from "./thread-switcher.js";
|
|
52
54
|
import { registerRunWorkflow } from "./wf-engine/register.js";
|
|
@@ -158,6 +160,13 @@ export default async function forgecli(pi) {
|
|
|
158
160
|
pi.on("session_start", async (_event, ctx) => {
|
|
159
161
|
if (!ctx.hasUI)
|
|
160
162
|
return; // headless mode — no banners
|
|
163
|
+
// Plan 16 Slice 4c: single pi listener for forge-cli; dispatch through
|
|
164
|
+
// the overlay-aware router. Per-feature listeners register via
|
|
165
|
+
// getInputRouter().register(...) instead of ctx.ui.onTerminalInput
|
|
166
|
+
// directly, so overlays (e.g. /forge:config) can suppress arrow
|
|
167
|
+
// activators while mounted.
|
|
168
|
+
const router = getInputRouter();
|
|
169
|
+
ctx.ui.onTerminalInput((data) => router.dispatch(data));
|
|
161
170
|
// Apply forge-dark as default. The theme is in ~/.pi/agent/themes/ so
|
|
162
171
|
// loadThemeJson finds it by name. Only apply if user hasn't saved a
|
|
163
172
|
// custom preference (setTheme also persists via settingsManager).
|
|
@@ -379,6 +388,13 @@ export default async function forgecli(pi) {
|
|
|
379
388
|
registerThreadSwitcher(pi);
|
|
380
389
|
// ── /forge:read native handler ───────────────────────────────────────────
|
|
381
390
|
registerReadCommand(pi, forgeRoot);
|
|
391
|
+
// ── /forge:config native handler (Plan 16 Slice 4a) ──────────────────────
|
|
392
|
+
// Replaces the LLM-backed delegateMarkdownCommand stub that previously
|
|
393
|
+
// lived in forge-commands.ts. Registered BEFORE registerForgeCommands so
|
|
394
|
+
// the real handler wins. The stub block in forge-commands.ts has been
|
|
395
|
+
// removed; forge:config stays in EXPLICITLY_REGISTERED_NAMES so the
|
|
396
|
+
// auto-stub loop never registers a fallback.
|
|
397
|
+
registerConfigCommand(pi, { forgeRoot });
|
|
382
398
|
// ── /forge:* command set (FORGE-S16-T04) ─────────────────────────────────
|
|
383
399
|
// Registered unconditionally so /forge:ask works outside a Forge project.
|
|
384
400
|
// Per-command handlers enforce the Q14 outside-project no-op contract.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export type RouterResult = {
|
|
2
|
+
consume?: boolean;
|
|
3
|
+
data?: string;
|
|
4
|
+
} | undefined;
|
|
5
|
+
export type RouterListener = (data: string) => RouterResult;
|
|
6
|
+
export interface RegisterOptions {
|
|
7
|
+
/** Stable name for debugging and unsubscription tracking. */
|
|
8
|
+
name: string;
|
|
9
|
+
/** When true, this listener is bypassed while any overlay is active.
|
|
10
|
+
* Use for keys that "activate" a widget (e.g. ↓ to open a strip) — the
|
|
11
|
+
* overlay needs the same key for navigation. Default: false. */
|
|
12
|
+
skipWhenOverlayActive?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare class ForgeInputRouter {
|
|
15
|
+
private listeners;
|
|
16
|
+
private overlayDepth;
|
|
17
|
+
register(listener: RouterListener, opts: RegisterOptions): () => void;
|
|
18
|
+
pushOverlay(): void;
|
|
19
|
+
popOverlay(): void;
|
|
20
|
+
isOverlayActive(): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Mirrors pi's listener-chain semantics (tui.ts:544-560):
|
|
23
|
+
* - Each listener may return { consume: true } to stop dispatch.
|
|
24
|
+
* - Each listener may return { data: rewritten } to alter the value the
|
|
25
|
+
* next listener (and ultimately the focused overlay) sees.
|
|
26
|
+
* - Listeners flagged skipWhenOverlayActive=true are silently bypassed
|
|
27
|
+
* whenever overlayDepth > 0.
|
|
28
|
+
*/
|
|
29
|
+
dispatch(data: string): RouterResult;
|
|
30
|
+
}
|
|
31
|
+
export declare function getInputRouter(): ForgeInputRouter;
|
|
32
|
+
/** Test helper — replace the singleton with a fresh router. */
|
|
33
|
+
export declare function __resetInputRouterForTesting(): void;
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
// Centralised onTerminalInput dispatch for forge-cli.
|
|
2
|
+
//
|
|
3
|
+
// Plan 16 Slice 4c. Pi-mono's `ctx.ui.onTerminalInput` lets any extension hook
|
|
4
|
+
// raw stdin, with the first consumer winning. Pi runs listeners BEFORE
|
|
5
|
+
// routing to the focused overlay (pi-mono/packages/tui/src/tui.ts:544-560).
|
|
6
|
+
// That made forge-cli's two existing arrow-activator listeners
|
|
7
|
+
// (thread-switcher, whats-new-widget) silently eat ↑/↓ when the config TUI was
|
|
8
|
+
// mounted as an overlay.
|
|
9
|
+
//
|
|
10
|
+
// This router gives forge-cli a single pi listener whose dispatch is
|
|
11
|
+
// overlay-aware: listeners flagged `skipWhenOverlayActive: true` are bypassed
|
|
12
|
+
// whenever an overlay has been registered via `pushOverlay()`. Other listeners
|
|
13
|
+
// (critical hotkeys, theme switchers, etc.) still run.
|
|
14
|
+
//
|
|
15
|
+
// Wiring:
|
|
16
|
+
// 1. index.ts session_start: `ctx.ui.onTerminalInput((d) => router.dispatch(d))`.
|
|
17
|
+
// 2. Each consumer: `router.register(listener, { name, skipWhenOverlayActive })`.
|
|
18
|
+
// 3. Each overlay mounter: `router.pushOverlay()` before ctx.ui.custom,
|
|
19
|
+
// `popOverlay()` in a finally.
|
|
20
|
+
//
|
|
21
|
+
// Debug logging (when FORGE_DEBUG_INPUT=1):
|
|
22
|
+
// Each dispatch + push/pop is logged with timestamp + listener name +
|
|
23
|
+
// overlay depth + raw byte sequence (hex-escaped). Default target:
|
|
24
|
+
// /tmp/forge-input-router.log. Override with FORGE_DEBUG_INPUT_LOG=<path>.
|
|
25
|
+
// Logging goes through fs.appendFileSync — synchronous so events are
|
|
26
|
+
// captured even when the process crashes mid-render.
|
|
27
|
+
import * as fs from "node:fs";
|
|
28
|
+
function debugEnabled() {
|
|
29
|
+
return process.env.FORGE_DEBUG_INPUT === "1";
|
|
30
|
+
}
|
|
31
|
+
function debugLogPath() {
|
|
32
|
+
return process.env.FORGE_DEBUG_INPUT_LOG ?? "/tmp/forge-input-router.log";
|
|
33
|
+
}
|
|
34
|
+
function hexEscape(s) {
|
|
35
|
+
// Render printable ASCII as-is, escape everything else as \xNN. Helps spot
|
|
36
|
+
// arrow sequences (\x1b[A etc.) and Kitty-protocol variants at a glance.
|
|
37
|
+
return [...s]
|
|
38
|
+
.map((c) => {
|
|
39
|
+
const cp = c.codePointAt(0);
|
|
40
|
+
if (cp >= 0x20 && cp <= 0x7e)
|
|
41
|
+
return c;
|
|
42
|
+
return `\\x${cp.toString(16).padStart(2, "0")}`;
|
|
43
|
+
})
|
|
44
|
+
.join("");
|
|
45
|
+
}
|
|
46
|
+
function logEvent(line) {
|
|
47
|
+
if (!debugEnabled())
|
|
48
|
+
return;
|
|
49
|
+
try {
|
|
50
|
+
const ts = new Date().toISOString();
|
|
51
|
+
fs.appendFileSync(debugLogPath(), `${ts} ${line}\n`);
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
// Logging must never crash the host; failure to write is silently ignored.
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
export class ForgeInputRouter {
|
|
58
|
+
listeners = [];
|
|
59
|
+
overlayDepth = 0;
|
|
60
|
+
register(listener, opts) {
|
|
61
|
+
const entry = { fn: listener, opts };
|
|
62
|
+
this.listeners.push(entry);
|
|
63
|
+
logEvent(`register name=${opts.name} skipWhenOverlayActive=${!!opts.skipWhenOverlayActive} total=${this.listeners.length}`);
|
|
64
|
+
return () => {
|
|
65
|
+
const i = this.listeners.indexOf(entry);
|
|
66
|
+
if (i >= 0) {
|
|
67
|
+
this.listeners.splice(i, 1);
|
|
68
|
+
logEvent(`unregister name=${opts.name} remaining=${this.listeners.length}`);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
pushOverlay() {
|
|
73
|
+
this.overlayDepth++;
|
|
74
|
+
logEvent(`pushOverlay depth=${this.overlayDepth}`);
|
|
75
|
+
}
|
|
76
|
+
popOverlay() {
|
|
77
|
+
if (this.overlayDepth > 0)
|
|
78
|
+
this.overlayDepth--;
|
|
79
|
+
logEvent(`popOverlay depth=${this.overlayDepth}`);
|
|
80
|
+
}
|
|
81
|
+
isOverlayActive() {
|
|
82
|
+
return this.overlayDepth > 0;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Mirrors pi's listener-chain semantics (tui.ts:544-560):
|
|
86
|
+
* - Each listener may return { consume: true } to stop dispatch.
|
|
87
|
+
* - Each listener may return { data: rewritten } to alter the value the
|
|
88
|
+
* next listener (and ultimately the focused overlay) sees.
|
|
89
|
+
* - Listeners flagged skipWhenOverlayActive=true are silently bypassed
|
|
90
|
+
* whenever overlayDepth > 0.
|
|
91
|
+
*/
|
|
92
|
+
dispatch(data) {
|
|
93
|
+
if (debugEnabled()) {
|
|
94
|
+
logEvent(`dispatch IN data="${hexEscape(data)}" overlayDepth=${this.overlayDepth} listeners=${this.listeners.length}`);
|
|
95
|
+
}
|
|
96
|
+
let current = data;
|
|
97
|
+
for (const entry of this.listeners) {
|
|
98
|
+
if (this.overlayDepth > 0 && entry.opts.skipWhenOverlayActive) {
|
|
99
|
+
logEvent(` skip name=${entry.opts.name} (overlay active)`);
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
const result = entry.fn(current);
|
|
103
|
+
if (debugEnabled()) {
|
|
104
|
+
const r = result === undefined ? "passthrough" : `${result.consume ? "consume" : ""}${result.data !== undefined ? ` data="${hexEscape(result.data)}"` : ""}`.trim() || "noop";
|
|
105
|
+
logEvent(` call name=${entry.opts.name} → ${r}`);
|
|
106
|
+
}
|
|
107
|
+
if (result?.consume) {
|
|
108
|
+
logEvent(`dispatch OUT consumed-by=${entry.opts.name}`);
|
|
109
|
+
return { consume: true };
|
|
110
|
+
}
|
|
111
|
+
if (result?.data !== undefined)
|
|
112
|
+
current = result.data;
|
|
113
|
+
}
|
|
114
|
+
if (current !== data) {
|
|
115
|
+
logEvent(`dispatch OUT rewritten data="${hexEscape(current)}"`);
|
|
116
|
+
return { data: current };
|
|
117
|
+
}
|
|
118
|
+
logEvent(`dispatch OUT passthrough (focused overlay should receive)`);
|
|
119
|
+
return undefined;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
// ── Module-level singleton ───────────────────────────────────────────────────
|
|
123
|
+
let singleton = null;
|
|
124
|
+
export function getInputRouter() {
|
|
125
|
+
if (!singleton)
|
|
126
|
+
singleton = new ForgeInputRouter();
|
|
127
|
+
return singleton;
|
|
128
|
+
}
|
|
129
|
+
/** Test helper — replace the singleton with a fresh router. */
|
|
130
|
+
export function __resetInputRouterForTesting() {
|
|
131
|
+
singleton = null;
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=input-router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-router.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/input-router.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { MergedConfig } from "./config-layer.js";
|
|
2
|
+
export type { MergedConfig } from "./config-layer.js";
|
|
3
|
+
export type ResolveSource = "L4-inline" | "L4-name" | "L3" | "L2" | "L1" | "default" | "inherit";
|
|
4
|
+
export type LookupSource = "L3" | "L2" | "L1" | "default" | "missing";
|
|
5
|
+
export interface ResolveResult {
|
|
6
|
+
model: {
|
|
7
|
+
provider: string;
|
|
8
|
+
model: string;
|
|
9
|
+
} | undefined;
|
|
10
|
+
source: ResolveSource;
|
|
11
|
+
}
|
|
12
|
+
export interface LookupResult {
|
|
13
|
+
model: {
|
|
14
|
+
provider: string;
|
|
15
|
+
model: string;
|
|
16
|
+
} | undefined;
|
|
17
|
+
source: LookupSource;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Look up a persona-model name through L3 → L2 → L1 → default → missing.
|
|
21
|
+
* Used by resolveModelForPhase for L4-name resolution and direct persona lookups.
|
|
22
|
+
*/
|
|
23
|
+
export declare function lookupPersonaModel(personaName: string, pipelineName: string, merged: MergedConfig): LookupResult;
|
|
24
|
+
/**
|
|
25
|
+
* Resolve the {provider, model} pair for a specific phase invocation.
|
|
26
|
+
*
|
|
27
|
+
* Cascade order:
|
|
28
|
+
* L4-inline → L4-name → L3 → L2 → L1 → default persona-model → inherit
|
|
29
|
+
*
|
|
30
|
+
* When source is "inherit", model is undefined — caller must skip setModel.
|
|
31
|
+
*/
|
|
32
|
+
export declare function resolveModelForPhase(pipelineName: string, phaseRole: string, personaNoun: string, merged: MergedConfig): ResolveResult;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
function toModel(pm) {
|
|
2
|
+
return { provider: pm.provider, model: pm.model };
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Look up a persona-model name through L3 → L2 → L1 → default → missing.
|
|
6
|
+
* Used by resolveModelForPhase for L4-name resolution and direct persona lookups.
|
|
7
|
+
*/
|
|
8
|
+
export function lookupPersonaModel(personaName, pipelineName, merged) {
|
|
9
|
+
// L3 — pipeline-level persona-models
|
|
10
|
+
const l3 = merged.pipelines?.[pipelineName]?.["persona-models"]?.[personaName];
|
|
11
|
+
if (l3)
|
|
12
|
+
return { model: toModel(l3), source: "L3" };
|
|
13
|
+
// L2 — project persona-models
|
|
14
|
+
const l2 = merged._project?.["persona-models"]?.[personaName];
|
|
15
|
+
if (l2)
|
|
16
|
+
return { model: toModel(l2), source: "L2" };
|
|
17
|
+
// L1 — global persona-models
|
|
18
|
+
const l1 = merged._global?.["persona-models"]?.[personaName];
|
|
19
|
+
if (l1)
|
|
20
|
+
return { model: toModel(l1), source: "L1" };
|
|
21
|
+
// default persona-model (same L3→L2→L1 walk with key="default")
|
|
22
|
+
if (personaName !== "default") {
|
|
23
|
+
const defL3 = merged.pipelines?.[pipelineName]?.["persona-models"]?.["default"];
|
|
24
|
+
if (defL3)
|
|
25
|
+
return { model: toModel(defL3), source: "default" };
|
|
26
|
+
const defL2 = merged._project?.["persona-models"]?.["default"];
|
|
27
|
+
if (defL2)
|
|
28
|
+
return { model: toModel(defL2), source: "default" };
|
|
29
|
+
const defL1 = merged._global?.["persona-models"]?.["default"];
|
|
30
|
+
if (defL1)
|
|
31
|
+
return { model: toModel(defL1), source: "default" };
|
|
32
|
+
}
|
|
33
|
+
return { model: undefined, source: "missing" };
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Resolve the {provider, model} pair for a specific phase invocation.
|
|
37
|
+
*
|
|
38
|
+
* Cascade order:
|
|
39
|
+
* L4-inline → L4-name → L3 → L2 → L1 → default persona-model → inherit
|
|
40
|
+
*
|
|
41
|
+
* When source is "inherit", model is undefined — caller must skip setModel.
|
|
42
|
+
*/
|
|
43
|
+
export function resolveModelForPhase(pipelineName, phaseRole, personaNoun, merged) {
|
|
44
|
+
const phase = merged.pipelines?.[pipelineName]?.phases?.[phaseRole];
|
|
45
|
+
const override = phase?.["model-override"];
|
|
46
|
+
if (override !== undefined) {
|
|
47
|
+
// L4-inline: override is an inline {provider, model} object
|
|
48
|
+
if (typeof override === "object") {
|
|
49
|
+
return { model: toModel(override), source: "L4-inline" };
|
|
50
|
+
}
|
|
51
|
+
// L4-name: override is a persona-model key string
|
|
52
|
+
const named = lookupPersonaModel(override, pipelineName, merged);
|
|
53
|
+
if (named.source !== "missing") {
|
|
54
|
+
return { model: named.model, source: "L4-name" };
|
|
55
|
+
}
|
|
56
|
+
// L4-name miss: fall through with original personaNoun
|
|
57
|
+
}
|
|
58
|
+
// L3 → L2 → L1 → default → missing
|
|
59
|
+
const lookup = lookupPersonaModel(personaNoun, pipelineName, merged);
|
|
60
|
+
if (lookup.source === "missing") {
|
|
61
|
+
return { model: undefined, source: "inherit" };
|
|
62
|
+
}
|
|
63
|
+
return { model: lookup.model, source: lookup.source };
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=model-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-resolver.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/model-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { MergedConfig } from "./config-layer.js";
|
|
2
|
+
export type ValidationCode = "UNKNOWN_PERSONA" | "MODEL_UNAVAILABLE" | "UNKNOWN_PIPELINE" | "UNRESOLVABLE_OVERRIDE";
|
|
3
|
+
export interface ValidationIssue {
|
|
4
|
+
code: ValidationCode;
|
|
5
|
+
message: string;
|
|
6
|
+
/** JSON-pointer-style path to the offending config value */
|
|
7
|
+
path?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface ValidationReport {
|
|
10
|
+
errors: ValidationIssue[];
|
|
11
|
+
warnings: ValidationIssue[];
|
|
12
|
+
}
|
|
13
|
+
type AvailableModel = {
|
|
14
|
+
provider: string;
|
|
15
|
+
id: string;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Validate the merged forge-cli model config against runtime catalogues.
|
|
19
|
+
*
|
|
20
|
+
* - strict=false: unavailability and unknown persona names are warnings.
|
|
21
|
+
* - strict=true: those warnings become errors.
|
|
22
|
+
* - Unknown pipeline names are always errors when pipelineCatalogue is non-null;
|
|
23
|
+
* warnings when pipelineCatalogue is null (no .forge/config.json found).
|
|
24
|
+
* - Unresolvable model-override strings are always errors.
|
|
25
|
+
*
|
|
26
|
+
* The function is pure — no I/O. Callers pass in the pre-built catalogues.
|
|
27
|
+
*/
|
|
28
|
+
export declare function validateModelConfig(personaCatalogue: string[], pipelineCatalogue: string[] | null, merged: MergedConfig, availableModels: AvailableModel[], strict: boolean): ValidationReport;
|
|
29
|
+
export {};
|