@gaunt-sloth/agent 2.0.0-alpha.8 → 2.0.0-beta.0
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/README.md +73 -23
- package/cli-acp.js +21 -24
- package/dist/builtInToolsConfig.d.ts +17 -3
- package/dist/builtInToolsConfig.js +43 -41
- package/dist/builtInToolsConfig.js.map +1 -1
- package/dist/core/debugCapture.d.ts +7 -49
- package/dist/core/debugCapture.js +1 -1
- package/dist/core/debugCapture.js.map +1 -1
- package/dist/core/resolveAgentFactory.d.ts +10 -9
- package/dist/core/resolveAgentFactory.js +11 -12
- package/dist/core/resolveAgentFactory.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.js +7 -5
- package/dist/index.js.map +1 -1
- package/dist/mcp/OAuthClientProviderImpl.js.map +1 -1
- package/dist/mcp/tlsTrust.d.ts +61 -0
- package/dist/mcp/tlsTrust.js +109 -0
- package/dist/mcp/tlsTrust.js.map +1 -0
- package/dist/middleware/binaryContentInjectionMiddleware.d.ts +8 -1
- package/dist/middleware/binaryContentInjectionMiddleware.js +11 -2
- package/dist/middleware/binaryContentInjectionMiddleware.js.map +1 -1
- package/dist/middleware/frontendImageInjectionMiddleware.d.ts +107 -0
- package/dist/middleware/frontendImageInjectionMiddleware.js +167 -0
- package/dist/middleware/frontendImageInjectionMiddleware.js.map +1 -0
- package/dist/middleware/registry.js +49 -1
- package/dist/middleware/registry.js.map +1 -1
- package/dist/middleware/types.d.ts +16 -2
- package/dist/modules/a2a/A2AClientWrapper.d.ts +56 -1
- package/dist/modules/a2a/A2AClientWrapper.js +131 -31
- package/dist/modules/a2a/A2AClientWrapper.js.map +1 -1
- package/dist/modules/acp/acpAgentApp.d.ts +57 -0
- package/dist/modules/acp/acpAgentApp.js +378 -0
- package/dist/modules/acp/acpAgentApp.js.map +1 -0
- package/dist/modules/acp/acpAgentAppV1.d.ts +52 -0
- package/dist/modules/acp/acpAgentAppV1.js +307 -0
- package/dist/modules/acp/acpAgentAppV1.js.map +1 -0
- package/dist/modules/acp/acpCommon.d.ts +167 -0
- package/dist/modules/acp/acpCommon.js +282 -0
- package/dist/modules/acp/acpCommon.js.map +1 -0
- package/dist/modules/acp/acpPermissions.d.ts +65 -0
- package/dist/modules/acp/acpPermissions.js +162 -0
- package/dist/modules/acp/acpPermissions.js.map +1 -0
- package/dist/modules/acp/acpPermissionsV1.d.ts +45 -0
- package/dist/modules/acp/acpPermissionsV1.js +110 -0
- package/dist/modules/acp/acpPermissionsV1.js.map +1 -0
- package/dist/modules/acp/acpRouter.d.ts +41 -0
- package/dist/modules/acp/acpRouter.js +48 -0
- package/dist/modules/acp/acpRouter.js.map +1 -0
- package/dist/modules/acp/acpStdio.d.ts +47 -0
- package/dist/modules/acp/acpStdio.js +71 -0
- package/dist/modules/acp/acpStdio.js.map +1 -0
- package/dist/modules/acp/acpToolCalls.d.ts +93 -0
- package/dist/modules/acp/acpToolCalls.js +193 -0
- package/dist/modules/acp/acpToolCalls.js.map +1 -0
- package/dist/modules/acp/acpUpdates.d.ts +48 -0
- package/dist/modules/acp/acpUpdates.js +142 -0
- package/dist/modules/acp/acpUpdates.js.map +1 -0
- package/dist/modules/acp/acpUpdatesV1.d.ts +61 -0
- package/dist/modules/acp/acpUpdatesV1.js +162 -0
- package/dist/modules/acp/acpUpdatesV1.js.map +1 -0
- package/dist/modules/apiAgUiModule.d.ts +87 -0
- package/dist/modules/apiAgUiModule.js +193 -28
- package/dist/modules/apiAgUiModule.js.map +1 -1
- package/dist/modules/interactiveSessionModule.js +497 -51
- package/dist/modules/interactiveSessionModule.js.map +1 -1
- package/dist/modules/slashCommands.d.ts +582 -0
- package/dist/modules/slashCommands.js +1001 -0
- package/dist/modules/slashCommands.js.map +1 -0
- package/dist/resolvers.js +119 -9
- package/dist/resolvers.js.map +1 -1
- package/dist/tools/GthCustomToolkit.js +95 -11
- package/dist/tools/GthCustomToolkit.js.map +1 -1
- package/dist/tools/GthDevToolkit.d.ts +8 -5
- package/dist/tools/GthDevToolkit.js +89 -43
- package/dist/tools/GthDevToolkit.js.map +1 -1
- package/dist/tools/GthFileSystemToolkit.d.ts +63 -0
- package/dist/tools/GthFileSystemToolkit.js +506 -105
- package/dist/tools/GthFileSystemToolkit.js.map +1 -1
- package/dist/tools/McpResourceTool.d.ts +31 -0
- package/dist/tools/McpResourceTool.js +106 -0
- package/dist/tools/McpResourceTool.js.map +1 -0
- package/dist/tools/gthChecklistTool.d.ts +30 -0
- package/dist/tools/gthChecklistTool.js +80 -0
- package/dist/tools/gthChecklistTool.js.map +1 -0
- package/dist/tools/gthGrepTool.d.ts +54 -0
- package/dist/tools/gthGrepTool.js +482 -0
- package/dist/tools/gthGrepTool.js.map +1 -0
- package/dist/tools/shell/env.js +1 -1
- package/dist/tools/shell/env.js.map +1 -1
- package/dist/tools/shell/outputBuffer.js.map +1 -1
- package/dist/tools/shell/workDir.d.ts +1 -10
- package/dist/tools/shell/workDir.js +10 -36
- package/dist/tools/shell/workDir.js.map +1 -1
- package/dist/utils/mcpAuthError.d.ts +36 -0
- package/dist/utils/mcpAuthError.js +89 -0
- package/dist/utils/mcpAuthError.js.map +1 -0
- package/dist/utils/mcpUtils.js +16 -0
- package/dist/utils/mcpUtils.js.map +1 -1
- package/package.json +13 -13
- package/dist/core/GthDeepAgent.d.ts +0 -181
- package/dist/core/GthDeepAgent.js +0 -682
- package/dist/core/GthDeepAgent.js.map +0 -1
- package/dist/core/deepAgentPermissions.d.ts +0 -115
- package/dist/core/deepAgentPermissions.js +0 -282
- package/dist/core/deepAgentPermissions.js.map +0 -1
- package/dist/core/gthAcpServer.d.ts +0 -27
- package/dist/core/gthAcpServer.js +0 -82
- package/dist/core/gthAcpServer.js.map +0 -1
- package/dist/core/gthDeepAgentFactory.d.ts +0 -8
- package/dist/core/gthDeepAgentFactory.js +0 -9
- package/dist/core/gthDeepAgentFactory.js.map +0 -1
- package/dist/modules/acpModule.d.ts +0 -40
- package/dist/modules/acpModule.js +0 -78
- package/dist/modules/acpModule.js.map +0 -1
- package/dist/tools/shell/allowlist.d.ts +0 -11
- package/dist/tools/shell/allowlist.js +0 -12
- package/dist/tools/shell/allowlist.js.map +0 -1
- package/dist/tools/shell/arity.d.ts +0 -11
- package/dist/tools/shell/arity.js +0 -12
- package/dist/tools/shell/arity.js.map +0 -1
- package/dist/tools/shell/hardline.d.ts +0 -15
- package/dist/tools/shell/hardline.js +0 -88
- package/dist/tools/shell/hardline.js.map +0 -1
- package/dist/tools/shell/normalize.d.ts +0 -10
- package/dist/tools/shell/normalize.js +0 -11
- package/dist/tools/shell/normalize.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactiveSessionModule.js","sourceRoot":"","sources":["../../src/modules/interactiveSessionModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyC,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAChG,OAAO,EACL,qBAAqB,EACrB,OAAO,EACP,WAAW,EACX,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAC/E,OAAO,EACL,eAAe,EACf,KAAK,EACL,IAAI,EACJ,aAAa,EACb,QAAQ,EACR,UAAU,EACV,KAAK,IAAI,KAAK,EACd,MAAM,IAAI,MAAM,GACjB,MAAM,wCAAwC,CAAC;AAEhD,OAAO,EAAoB,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAUvE,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,aAA4B,EAC5B,0BAAsD,EACtD,OAAgB;IAEhB,MAAM,MAAM,GAAG,EAAE,GAAG,CAAC,MAAM,UAAU,CAAC,0BAA0B,CAAC,CAAC,EAAE,CAAC;IACrE,MAAM,eAAe,GAAG,IAAI,WAAW,EAAE,CAAC;IAC1C,oBAAoB;IAEpB,MAAM,WAAW,GAAG,wBAAwB,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IACzE,IAAI,WAAW,EAAE,CAAC;QAChB,kBAAkB,CAAC,WAAW,EAAE,MAAM,CAAC,yBAAyB,CAAC,CAAC;IACpE,CAAC;IACD,0FAA0F;IAC1F,0FAA0F;IAC1F,MAAM,MAAM,GAAG,IAAI,cAAc,CAC/B,qBAAqB,EACrB,eAAe,EAAE,EACjB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CACpC,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;QAC/D,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9C,IAAI,UAAU,GAAG,KAAK,CAAC;QAEvB,4FAA4F;QAC5F,sFAAsF;QACtF,2FAA2F;QAC3F,wFAAwF;QACxF,4FAA4F;QAC5F,4FAA4F;QAC5F,MAAM,OAAO,GAAG,CAAC,MAAc,EAAmB,EAAE;YAClD,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC,CAAC;QAEF,kFAAkF;QAClF,2FAA2F;QAC3F,yFAAyF;QACzF,2DAA2D;QAC3D,wEAAwE;QACxE,2FAA2F;QAC3F,mEAAmE;QACnE,0CAA0C;QAC1C,0FAA0F;QAC1F,4FAA4F;QAC5F,iFAAiF;QACjF,MAAM,CAAC,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YAC/C,MAAM,WAAW,GACf,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,KAAK,QAAQ;gBACtC,CAAC,CAAE,OAAO,CAAC,IAAI,CAAC,OAAkB;gBAClC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACnC,cAAc,CAAC,gDAAgD,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;YAChF,OAAO,CAAC,SAAS,WAAW,IAAI,CAAC,CAAC;YAClC,6FAA6F;YAC7F,8CAA8C;YAC9C,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;gBAC1B,cAAc,CACZ,mBAAmB,OAAO,CAAC,aAAa,CAAC,IAAI,MAAM,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,CAClF,CAAC;YACJ,CAAC;YACD,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,gDAAgD;YACnE,yFAAyF;YACzF,4FAA4F;YAC5F,6FAA6F;YAC7F,oEAAoE;YACpE,IAAI,MAAc,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,GAAG,CACP,MAAM,OAAO,CAAC,iBAAiB,CAAC,iDAAiD,CAAC,CAAC,CACpF;qBACE,IAAI,EAAE;qBACN,WAAW,EAAE,CAAC;YACnB,CAAC;oBAAS,CAAC;gBACT,QAAQ,EAAE,CAAC;YACb,CAAC;YACD,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACxC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;YAC5C,CAAC;YACD,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC3C,WAAW,CAAC,gEAAgE,CAAC,CAAC;gBAC9E,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;YAC/C,CAAC;YACD,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC1C,WAAW,CAAC,2DAA2D,CAAC,CAAC;gBACzE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;YAC9C,CAAC;YACD,WAAW,CAAC,mBAAmB,CAAC,CAAC;YACjC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,kCAAkC,EAAE,CAAC;QACzE,CAAC,CAAC,CAAC;QAEH,IAAI,WAAW,EAAE,CAAC;YAChB,WAAW,CAAC,GAAG,aAAa,CAAC,IAAI,8BAA8B,WAAW,IAAI,CAAC,CAAC;QAClF,CAAC;QAED,MAAM,cAAc,GAAG,KAAK,EAAE,SAAiB,EAAE,EAAE;YACjD,MAAM,QAAQ,GAAG,cAAc,SAAS,sBAAsB,CAAC;YAC/D,IAAI,WAAW,EAAE,CAAC;gBAChB,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YACtC,CAAC;YACD,eAAe,EAAE,CAAC,CAAC,mDAAmD;YACtE,uFAAuF;YACvF,0FAA0F;YAC1F,6FAA6F;YAC7F,mCAAmC;YACnC,MAAM,QAAQ,GAAkB,CAAC,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;YAE9D,2FAA2F;YAC3F,kFAAkF;YAClF,2FAA2F;YAC3F,qFAAqF;YACrF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC5D,IAAI,QAAQ,GAAgB,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;gBACjC,IAAI,CAAC;oBAAE,QAAQ,GAAG,CAAC,CAAC;YACtB,CAAC;YAAC,MAAM,CAAC;gBACP,wDAAwD;YAC1D,CAAC;YACD,iBAAiB,CAAC,MAAM,EAAE;gBACxB,OAAO,EAAE,aAAa,CAAC,IAAI;gBAC3B,OAAO,EAAE,aAAa,EAAE;gBACxB,KAAK,EAAE,MAAM,CAAC,gBAAgB;gBAC9B,MAAM,EAAE,SAAS;gBACjB,QAAQ,EAAE,YAAY;gBACtB,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,YAAY,EAAE,QAAQ,CAAC,YAAY;gBACnC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;gBAC7D,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;aACnC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE;YAC7B,OAAO,CAAC,UAAU,EAAE,CAAC;gBACnB,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,2EAA2E;gBAC7F,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC/D,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;oBACtB,SAAS,CAAC,6BAA6B;gBACzC,CAAC;gBACD,MAAM,UAAU,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;gBAClD,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;oBACpD,OAAO,CAAC,YAAY,CAAC,CAAC;oBACtB,UAAU,GAAG,IAAI,CAAC;oBAClB,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;oBACvB,kBAAkB,EAAE,CAAC;oBACrB,EAAE,CAAC,KAAK,EAAE,CAAC;oBACX,MAAM;gBACR,CAAC;gBACD,qFAAqF;gBACrF,wFAAwF;gBACxF,sFAAsF;gBACtF,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;oBAC3B,MAAM,OAAO,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC;oBAC3C,IAAI,OAAO,EAAE,CAAC;wBACZ,cAAc,CACZ,+EAA+E;4BAC7E,qGAAqG,CACxG,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,WAAW,CAAC,0DAA0D,CAAC,CAAC;oBAC1E,CAAC;oBACD,SAAS,CAAC,uCAAuC;gBACnD,CAAC;gBAED,IAAI,WAAW,GAAG,KAAK,CAAC;gBAExB,GAAG,CAAC;oBACF,IAAI,CAAC;wBACH,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC;wBAChC,WAAW,GAAG,KAAK,CAAC;oBACtB,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,OAAO,CACL,iCAAiC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CACtF,CAAC;wBACF,0EAA0E;wBAC1E,gFAAgF;wBAChF,2EAA2E;wBAC3E,MAAM,aAAa,GAAG,MAAM,OAAO,CACjC,wDAAwD,CACzD,CAAC;wBACF,WAAW,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;wBAEjE,IAAI,CAAC,WAAW,EAAE,CAAC;4BACjB,OAAO,CAAC,8BAA8B,CAAC,CAAC;wBAC1C,CAAC;oBACH,CAAC;gBACH,CAAC,QAAQ,WAAW,IAAI,CAAC,UAAU,EAAE;gBAErC,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,OAAO,CAAC,MAAM,CAAC,CAAC;oBAChB,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;YACD,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC,CAAC;QAEF,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YACpC,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,CAAC,UAAU;YAAE,MAAM,WAAW,EAAE,CAAC;QACrC,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,EAAE,CAAC;YACT,CAAC,EAAE,GAAG,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,kBAAkB,EAAE,CAAC;QACrB,KAAK,CAAC,YAAY,aAAa,CAAC,IAAI,aAAa,GAAG,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,CAAC,CAAC,CAAC;IACV,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"interactiveSessionModule.js","sourceRoot":"","sources":["../../src/modules/interactiveSessionModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,582 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure, React-free slash-command layer shared by BOTH interactive surfaces (GS2-8): the Ink
|
|
3
|
+
* TUI (`packages/app/src/tui/`, which re-exports this module) and the readline `--no-tui`
|
|
4
|
+
* session (`interactiveSessionModule.ts` in this package). One registry, one source of truth —
|
|
5
|
+
* a command added here appears in `/help` on both surfaces automatically.
|
|
6
|
+
*
|
|
7
|
+
* Mirrors how the TUI's `viewModel.ts` keeps its fold logic out of the components: the registry
|
|
8
|
+
* and the parse/dispatch helpers here are unit-testable in isolation, and each surface is the
|
|
9
|
+
* only place that turns the resulting {@link SlashCommandResult} into its own state / side
|
|
10
|
+
* effects (the TUI's `<App>` clears the transcript / pushes notices / quits; the readline loop
|
|
11
|
+
* prints notices and degrades TUI-only effects with a clear "needs the TUI" message).
|
|
12
|
+
*
|
|
13
|
+
* The registry is a plain array so later layers (e.g. extension-registered commands, EXT-5)
|
|
14
|
+
* can append more entries via {@link createCommandRegistry} without this module changing.
|
|
15
|
+
*/
|
|
16
|
+
import type { ApprovalRung, McpAnnotationTrustChange, McpAnnotationTrustView, ResolvedApprovals, ToolAnnotationHint } from '@gaunt-sloth/core/config.js';
|
|
17
|
+
import type { ApprovalGrant } from '@gaunt-sloth/core/core/approvals/grants.js';
|
|
18
|
+
/**
|
|
19
|
+
* TUI-C63 — one advertised key binding: the keys as the user's keyboard spells them, and what
|
|
20
|
+
* they do. The keys are a display string, not a parsed chord — this module never matches on it.
|
|
21
|
+
*/
|
|
22
|
+
export interface KeyBinding {
|
|
23
|
+
/** e.g. `PgUp / PgDn`. Named for keyboards that lack the key where that differs (DL-5, DL-7). */
|
|
24
|
+
keys: string;
|
|
25
|
+
/** What the keys do, in one short phrase. */
|
|
26
|
+
description: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* TUI-C63 — bindings grouped by the context they are reachable in. The bindings are modal (Esc
|
|
30
|
+
* alone means three different things depending on what owns the keyboard), so a flat list of every
|
|
31
|
+
* bound key would mislead; the group is what makes each line true.
|
|
32
|
+
*/
|
|
33
|
+
export interface KeyBindingGroup {
|
|
34
|
+
/** The context the group's bindings apply in, e.g. `Scrolling the conversation`. */
|
|
35
|
+
title: string;
|
|
36
|
+
bindings: readonly KeyBinding[];
|
|
37
|
+
}
|
|
38
|
+
/** Read-only session context a command may surface (e.g. `/status`, `/model`). */
|
|
39
|
+
export interface SlashCommandContext {
|
|
40
|
+
mode: string;
|
|
41
|
+
modelDisplayName: string;
|
|
42
|
+
/** Count of committed turns so far (for `/help`-style introspection if needed). */
|
|
43
|
+
turnCount: number;
|
|
44
|
+
/** Whether tool-call panels currently show their full args/result (drives `/verbose` copy). */
|
|
45
|
+
toolsExpanded: boolean;
|
|
46
|
+
/** Whether the docked debug panel is currently shown (drives `/debug` copy). */
|
|
47
|
+
debugVisible: boolean;
|
|
48
|
+
/**
|
|
49
|
+
* TUI-C37 — whether terminal mouse reporting is currently on (drives `/mouse` copy). Undefined on
|
|
50
|
+
* surfaces that have no mouse layer at all, where `/mouse` reports itself unavailable rather than
|
|
51
|
+
* claiming a state it cannot change.
|
|
52
|
+
*/
|
|
53
|
+
mouseEnabled?: boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Pre-rendered, secret-free summary lines of the resolved config, surfaced read-only by
|
|
56
|
+
* `/config` (GS2-1). The App builds these once from the resolved config (see
|
|
57
|
+
* {@link formatConfigSummary}); omitted where no config is loaded (e.g. the fixture agent).
|
|
58
|
+
*/
|
|
59
|
+
configSummary?: string[];
|
|
60
|
+
/**
|
|
61
|
+
* TUI-C19 — the actual config-validation warnings (unknown keys / deprecated names) captured at
|
|
62
|
+
* load, so `/config` can render the DETAILS the standing "config has problems" advisory line
|
|
63
|
+
* points at. Empty/omitted ⇒ `/config` shows only the resolved summary (a clean config).
|
|
64
|
+
*/
|
|
65
|
+
configWarnings?: string[];
|
|
66
|
+
/**
|
|
67
|
+
* GS2-7 (B20) / GS2-19 — pre-rendered recent-conversation lines for `/history`. The App builds
|
|
68
|
+
* these fail-soft from the local history store (see `formatConversationList`); omitted when no
|
|
69
|
+
* store is available (history never enabled / DB missing), in which case `/history` shows an
|
|
70
|
+
* "unavailable" notice.
|
|
71
|
+
*/
|
|
72
|
+
historySummary?: string[];
|
|
73
|
+
/**
|
|
74
|
+
* GS2-7 (B20) — pre-rendered analytics lines for `/insights` (see `formatInsightsSummary`),
|
|
75
|
+
* built fail-soft by the App; omitted when no store is available.
|
|
76
|
+
*/
|
|
77
|
+
insightsSummary?: string[];
|
|
78
|
+
/**
|
|
79
|
+
* GS2-7 (B20) — a fail-soft search provider for `/search <query>`, bound by the App to the local
|
|
80
|
+
* history store (returns already-formatted result lines). Injected (rather than the command
|
|
81
|
+
* touching the DB) so the registry stays pure and testable with a stub. Omitted when no store is
|
|
82
|
+
* available, in which case `/search` reports that history is unavailable.
|
|
83
|
+
*/
|
|
84
|
+
historySearch?: (query: string) => string[];
|
|
85
|
+
/**
|
|
86
|
+
* TUI-C18 — the reasoning text of each committed assistant turn, in transcript order (index 0 =
|
|
87
|
+
* turn 1). `''` for a turn that produced no thinking layer. Drives `/reasoning`, which reprints a
|
|
88
|
+
* committed turn's thinking. The App builds this from the transcript; omitted (empty) where there
|
|
89
|
+
* are no committed turns yet.
|
|
90
|
+
*/
|
|
91
|
+
turnReasonings?: string[];
|
|
92
|
+
/**
|
|
93
|
+
* GS2-46 — the live transcript (all committed turns, tool calls + results) and the resolved
|
|
94
|
+
* config, for `/debug-dump`. Kept opaque (`unknown`) so this pure module stays decoupled from
|
|
95
|
+
* the TUI's `TranscriptItem` type and `GthConfig` — forwarded as-is into the injected
|
|
96
|
+
* `dumpDebugSession` writer (see {@link DebugDumpInput}). Omitted where no session state is
|
|
97
|
+
* available (e.g. the fixture agent), in which case `/debug-dump` reports itself unavailable.
|
|
98
|
+
*/
|
|
99
|
+
transcript?: unknown[];
|
|
100
|
+
/** GS2-46 — see {@link SlashCommandContext.transcript}. */
|
|
101
|
+
resolvedConfig?: unknown;
|
|
102
|
+
/**
|
|
103
|
+
* GS2-46 — fs-writing implementation for `/debug-dump`: writes an UNSANITIZED archive
|
|
104
|
+
* (transcript, resolved config, env/version info, the in-memory debugLog ring buffer, and
|
|
105
|
+
* best-effort git repo state) to `~/.gsloth/debug-dumps/<timestamp>/` and returns its path.
|
|
106
|
+
* Injected by the App the same way `historySearch` is (GS2-7), so this module stays pure and
|
|
107
|
+
* testable with a fake — the real writer (`packages/core/src/utils/debugDump.ts`) does the
|
|
108
|
+
* actual I/O. Omitted ⇒ `/debug-dump` reports itself unavailable (fixture / no session state).
|
|
109
|
+
*/
|
|
110
|
+
dumpDebugSession?: (input: DebugDumpInput) => {
|
|
111
|
+
archiveDir: string;
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* TUI-C63 — the key bindings THIS surface actually has, grouped by context, appended to `/help`.
|
|
115
|
+
*
|
|
116
|
+
* Supplied by the surface rather than held as a constant here, because this registry is shared
|
|
117
|
+
* (GS2-8) and the two surfaces have different keyboards: the full-screen TUI owns its conversation
|
|
118
|
+
* region and every key that scrolls it, while the readline session has no Ink components, no mouse
|
|
119
|
+
* layer and the terminal's own scrollback — so wheel, PgUp/PgDn, Ctrl+Home/Ctrl+End and Ctrl+T
|
|
120
|
+
* mean nothing there. Readline passes nothing and its `/help` stays the command list alone.
|
|
121
|
+
* GS2-87: the divergence is deliberate and stated, never accidental.
|
|
122
|
+
*/
|
|
123
|
+
keyBindings?: readonly KeyBindingGroup[];
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* GS2-46 — the input `/debug-dump` assembles from context and hands to the injected
|
|
127
|
+
* `dumpDebugSession` writer. `transcript`/`config` are opaque to this pure module (the real
|
|
128
|
+
* writer, not this file, interprets them); `modelDisplayName` mirrors the field already on
|
|
129
|
+
* {@link SlashCommandContext}.
|
|
130
|
+
*/
|
|
131
|
+
export interface DebugDumpInput {
|
|
132
|
+
transcript: unknown[];
|
|
133
|
+
config: unknown;
|
|
134
|
+
modelDisplayName: string;
|
|
135
|
+
/**
|
|
136
|
+
* GS2-47 — whether the writer should redact secrets from every artifact. Resolved by
|
|
137
|
+
* {@link resolveDebugDumpRedact} from the config (`debugDump.redact`, default ON) and the
|
|
138
|
+
* `--unsafe-no-redact` command flag, then threaded straight through to `writeDebugDump`.
|
|
139
|
+
*/
|
|
140
|
+
redact: boolean;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* The subset of the resolved config `/config` surfaces. Structurally typed (not the full
|
|
144
|
+
* `GthConfig`) so this pure module stays decoupled from the config types; the caller passes the
|
|
145
|
+
* real resolved config, which is a superset.
|
|
146
|
+
*/
|
|
147
|
+
export interface ConfigSummaryInput {
|
|
148
|
+
modelDisplayName?: string;
|
|
149
|
+
agent?: {
|
|
150
|
+
backend?: string;
|
|
151
|
+
};
|
|
152
|
+
filesystem?: unknown;
|
|
153
|
+
streamOutput?: boolean;
|
|
154
|
+
useColour?: boolean;
|
|
155
|
+
consoleLevel?: unknown;
|
|
156
|
+
commands?: Record<string, unknown>;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Build the compact, read-only `/config` summary (GS2-1): a handful of the most orienting
|
|
160
|
+
* resolved-config fields, one per line, with a pointer to `gth config print` for the full view.
|
|
161
|
+
* Pure and secret-free — it only reads non-sensitive scalar fields (never API keys / the live
|
|
162
|
+
* llm instance). Used by the App to fill {@link SlashCommandContext.configSummary}.
|
|
163
|
+
*
|
|
164
|
+
* CFG-25 — `filesystem` is a precedence-picked per-command field (GS2-60), so the panel prints the
|
|
165
|
+
* EFFECTIVE value for the running `command`, read from `config.commands[command].filesystem` —
|
|
166
|
+
* where the GS2-60 resolution already baked the correct 4-layer precedence — falling back to the
|
|
167
|
+
* top-level value, exactly the read `getEffectiveConfig` performs (no precedence re-derived here).
|
|
168
|
+
* When the effective and top-level values differ, both are shown
|
|
169
|
+
* (`Filesystem: all (code; top-level: none)`) so the top-level default can never understate what
|
|
170
|
+
* the session can actually do. Of the other precedence-picked fields
|
|
171
|
+
* (`builtInTools`/`allowedTools`/`binaryFormats`), none are printed by this panel, so none can
|
|
172
|
+
* misreport the same way.
|
|
173
|
+
*/
|
|
174
|
+
export declare function formatConfigSummary(config: ConfigSummaryInput, command?: string): string[];
|
|
175
|
+
/**
|
|
176
|
+
* The `/config` notice, from the pre-rendered summary lines (or an unavailable fallback).
|
|
177
|
+
*
|
|
178
|
+
* TUI-C19 — when config-validation `warnings` are present (unknown keys / deprecated names), they
|
|
179
|
+
* are rendered FIRST, as the details the standing "config has problems" advisory line points at,
|
|
180
|
+
* then a blank spacer, then the resolved summary. A clean config (no warnings) reads exactly as
|
|
181
|
+
* before. Tone flips to `warn` (yellow) while there are warnings so the block reads as caution.
|
|
182
|
+
*/
|
|
183
|
+
export declare function configNotice(summary: string[] | undefined, warnings?: string[]): SlashCommandNotice;
|
|
184
|
+
/** The `/history` notice (GS2-7): recent recorded sessions, or an "unavailable" fallback. */
|
|
185
|
+
export declare function historyNotice(summary: string[] | undefined): SlashCommandNotice;
|
|
186
|
+
/** The `/insights` notice (GS2-7): local analytics summary, or an "unavailable" fallback. */
|
|
187
|
+
export declare function insightsNotice(summary: string[] | undefined): SlashCommandNotice;
|
|
188
|
+
/**
|
|
189
|
+
* The `/search` notice (GS2-7). With no query it prints usage; otherwise it runs the injected
|
|
190
|
+
* fail-soft {@link SlashCommandContext.historySearch} provider and renders its result lines. When
|
|
191
|
+
* no provider is bound (no store), it reports history as unavailable.
|
|
192
|
+
*/
|
|
193
|
+
export declare function searchNotice(args: string[], search: ((query: string) => string[]) | undefined): SlashCommandNotice;
|
|
194
|
+
/**
|
|
195
|
+
* A structured, noticeable command-feedback block (TUI-C14): a title that states WHAT happened
|
|
196
|
+
* plus body lines explaining HOW it affects the user. The component renders these via
|
|
197
|
+
* `<CommandNotice>` so every command gives consistent, explanatory feedback.
|
|
198
|
+
*/
|
|
199
|
+
export interface SlashCommandNotice {
|
|
200
|
+
title: string;
|
|
201
|
+
lines: string[];
|
|
202
|
+
/** Title tone; defaults to 'info' (cyan). Use 'warn' (yellow) for unknown commands. */
|
|
203
|
+
tone?: 'info' | 'warn';
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* The effects a dispatched command can request. The component interprets these; the command
|
|
207
|
+
* itself stays pure (no React, no I/O) so it is trivially testable.
|
|
208
|
+
*/
|
|
209
|
+
export interface SlashCommandResult {
|
|
210
|
+
/**
|
|
211
|
+
* A structured notice to commit into the transcript (the command's user-visible feedback).
|
|
212
|
+
* Preferred over `message` for all commands so feedback is consistent and noticeable (TUI-C14).
|
|
213
|
+
*/
|
|
214
|
+
notice?: SlashCommandNotice;
|
|
215
|
+
/** A terse system line (incidental/error output); commands prefer `notice`. */
|
|
216
|
+
message?: string;
|
|
217
|
+
/** Level for the system line; defaults to 'info'. */
|
|
218
|
+
level?: string;
|
|
219
|
+
/** When true, the component clears the transcript. */
|
|
220
|
+
clearTranscript?: boolean;
|
|
221
|
+
/** When true, the component toggles the docked debug panel (subagents + debug views). */
|
|
222
|
+
toggleDebug?: boolean;
|
|
223
|
+
/** When true, the component toggles tool-call panels between collapsed and expanded. */
|
|
224
|
+
toggleTools?: boolean;
|
|
225
|
+
/**
|
|
226
|
+
* TUI-C37 — the state `/mouse` asks the surface to move terminal mouse reporting to. The command
|
|
227
|
+
* stays pure (it cannot write escape sequences), so the App applies it and owns the actual
|
|
228
|
+
* enable/disable, the same division `/approvals` uses for the runner's posture.
|
|
229
|
+
*/
|
|
230
|
+
setMouse?: boolean;
|
|
231
|
+
/**
|
|
232
|
+
* CFG-27 — a requested action from `/approvals`. `{ show: true }` asks the surface to DISPLAY
|
|
233
|
+
* the current posture; `{ rung }` asks it to switch the session to that rung. The command itself
|
|
234
|
+
* stays pure — it cannot read the runner's posture — so the surface owns the apply + the
|
|
235
|
+
* resulting-state notice (mirroring how `/verbose` / `/debug` defer their state-aware copy to
|
|
236
|
+
* the App).
|
|
237
|
+
*
|
|
238
|
+
* There is deliberately NO `toggle` action: with five ordered rungs a flip has no honest
|
|
239
|
+
* meaning, which is also why `/auto-approve` and `/bypass-approve` were retired with the
|
|
240
|
+
* three-mode vocabulary that gave them their names.
|
|
241
|
+
*
|
|
242
|
+
* EXT-70 adds `{ trust }` — start or stop believing specific annotation hints from one MCP
|
|
243
|
+
* server (§4.7.1). It takes the same route for the same reason: the command cannot read or write
|
|
244
|
+
* the runner's posture, so it states the request and the surface applies it and reports what
|
|
245
|
+
* landed.
|
|
246
|
+
*/
|
|
247
|
+
approvals?: {
|
|
248
|
+
show: true;
|
|
249
|
+
} | {
|
|
250
|
+
rung: ApprovalRung;
|
|
251
|
+
} | {
|
|
252
|
+
trust: McpTrustRequest;
|
|
253
|
+
};
|
|
254
|
+
/**
|
|
255
|
+
* TUI-C18 — a committed turn's thinking to REPRINT into the transcript (the `/reasoning` command).
|
|
256
|
+
* Recall rather than retro-mutation: a fresh block reusing the TUI-C15 `💭`/gutter styling appears
|
|
257
|
+
* at the bottom of the conversation, where the user is looking, instead of changing a turn they
|
|
258
|
+
* have scrolled away from. The App turns this into a `reasoning` transcript item; the command stays
|
|
259
|
+
* pure (it resolves the target from `turnReasonings`). Absent when the command instead returns a
|
|
260
|
+
* friendly `notice` (no reasoning / out-of-range).
|
|
261
|
+
*/
|
|
262
|
+
reprintReasoning?: {
|
|
263
|
+
reasoning: string;
|
|
264
|
+
turnNumber: number;
|
|
265
|
+
};
|
|
266
|
+
/** When true, the component quits the app (runs `onExit`). */
|
|
267
|
+
exit?: boolean;
|
|
268
|
+
}
|
|
269
|
+
/** A single registered slash command. `run` is pure: context in, result out. */
|
|
270
|
+
export interface SlashCommand {
|
|
271
|
+
/** The name without the leading slash, e.g. `help`. Matched case-insensitively. */
|
|
272
|
+
name: string;
|
|
273
|
+
/** One-line description shown by `/help`. */
|
|
274
|
+
description: string;
|
|
275
|
+
/**
|
|
276
|
+
* EXT-12 — whether this command may be dispatched WHILE a turn is streaming ("during
|
|
277
|
+
* inference"). Defaults to false: most commands are idle-only. The read-only / session-toggle
|
|
278
|
+
* commands (e.g. `/approvals`, `/verbose`, `/debug`, `/help`, `/model`) set this so the user
|
|
279
|
+
* can change the approval mode or inspect state mid-turn without interrupting the run. Commands that
|
|
280
|
+
* mutate the transcript or thread (`/clear`) or end the session (`/exit`) stay idle-only.
|
|
281
|
+
*/
|
|
282
|
+
availableDuringRun?: boolean;
|
|
283
|
+
run(ctx: SlashCommandContext, args: string[]): SlashCommandResult;
|
|
284
|
+
}
|
|
285
|
+
/** Parsed shape of a `/...` line. `null` for plain (non-slash) input. */
|
|
286
|
+
export interface ParsedSlashCommand {
|
|
287
|
+
name: string;
|
|
288
|
+
args: string[];
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Parse a raw input line into a slash command, or `null` if it is not one. A line is a slash
|
|
292
|
+
* command iff its first non-whitespace character is `/` AND no further `/` appears after the
|
|
293
|
+
* leading one (GS2-8, Mari's dogfood addendum): a pasted filesystem path like
|
|
294
|
+
* `/usr/home/bob/test.md` contains later slashes, so it falls through as ordinary prompt text
|
|
295
|
+
* instead of being swallowed as an unknown command. The name is lower-cased; remaining
|
|
296
|
+
* whitespace-separated tokens are the args.
|
|
297
|
+
*/
|
|
298
|
+
export declare function parseSlashCommand(input: string): ParsedSlashCommand | null;
|
|
299
|
+
/**
|
|
300
|
+
* TUI-C10 — the discovery-menu trigger test. The Ink `<PromptInput>` shows the slash-command menu
|
|
301
|
+
* while the user is typing a bare command: the raw input is a menu query iff its first character is
|
|
302
|
+
* `/` and it contains no whitespace yet (once a space is typed the user is entering args, so the
|
|
303
|
+
* menu closes and normal dispatch takes over). Returns the lower-cased query AFTER the slash (so a
|
|
304
|
+
* bare `/` yields `''` = "show everything"), or `null` when the input is not a menu trigger.
|
|
305
|
+
*
|
|
306
|
+
* Kept pure and next to the registry (like {@link parseSlashCommand}) so the menu's show/hide and
|
|
307
|
+
* filter logic is unit-testable without React.
|
|
308
|
+
*
|
|
309
|
+
* GS2-8 — mirrors {@link parseSlashCommand}'s `/`-vs-path heuristic: input with a later `/`
|
|
310
|
+
* (a pasted path like `/usr/bin`) is not a command, so it never triggers the menu either.
|
|
311
|
+
*/
|
|
312
|
+
export declare function slashMenuQuery(input: string): string | null;
|
|
313
|
+
/**
|
|
314
|
+
* TUI-C10 — filter the registry down to the commands that match a menu query, most-relevant first.
|
|
315
|
+
* Prefix matches (the name starts with the query) rank above looser substring matches; within each
|
|
316
|
+
* bucket the registry's own order is preserved (so extension-registered commands — appended to the
|
|
317
|
+
* array — naturally sort after the built-ins). An empty query returns the whole registry, so a bare
|
|
318
|
+
* `/` lists every command including any the extensions added (never a hardcoded list).
|
|
319
|
+
*
|
|
320
|
+
* Pure: takes the registry the caller already built via {@link createCommandRegistry}, so the menu
|
|
321
|
+
* automatically reflects extension commands without this layer knowing they exist.
|
|
322
|
+
*/
|
|
323
|
+
export declare function filterSlashCommands(registry: SlashCommand[], query: string): SlashCommand[];
|
|
324
|
+
/**
|
|
325
|
+
* The notice for the tool-detail toggle, given the RESULTING (post-toggle) state. Shared by the
|
|
326
|
+
* `/verbose` command (GS2-8 rename of `/tools`) and the Ctrl+T key handler so the copy
|
|
327
|
+
* is single-sourced (TUI-C14).
|
|
328
|
+
*/
|
|
329
|
+
export declare function toolsToggleNotice(expanded: boolean): SlashCommandNotice;
|
|
330
|
+
/**
|
|
331
|
+
* The notice for the debug-panel toggle, given the RESULTING (post-toggle) state. Shared so the
|
|
332
|
+
* command reports exactly the state the component will apply.
|
|
333
|
+
*/
|
|
334
|
+
export declare function debugToggleNotice(visible: boolean): SlashCommandNotice;
|
|
335
|
+
/**
|
|
336
|
+
* CFG-27 — the notice for a landed approvals RUNG, given the RESULTING (post-apply) posture.
|
|
337
|
+
* Shared so every surface reports exactly the state that was applied, and so the copy can never
|
|
338
|
+
* drift from what the gate actually does.
|
|
339
|
+
*
|
|
340
|
+
* The body of each notice is §10's description, **verbatim** — the one place the ladder is
|
|
341
|
+
* explained to the user, so it must not be paraphrased per surface. §10 rule 4 also fixes the
|
|
342
|
+
* label: the display spelling with spaces, never the kebab-case identifier.
|
|
343
|
+
*
|
|
344
|
+
* `bypass` is the only warn-toned one: it is the single rung with no gate at all. Note what is
|
|
345
|
+
* NOT here — the hardline floor. §8.1 forbids advertising it: descriptions name only protections
|
|
346
|
+
* the user can inspect and extend, which is the deny list.
|
|
347
|
+
*/
|
|
348
|
+
/**
|
|
349
|
+
* TUI-C37 — feedback for `/mouse`, describing the state the session has LANDED on.
|
|
350
|
+
*
|
|
351
|
+
* The selection hint is repeated on every "on" notice rather than shown once at launch, because the
|
|
352
|
+
* moment a user reaches for `/mouse` is exactly the moment they are trying to copy something and
|
|
353
|
+
* finding that dragging no longer selects. Telling them there and then is the difference between a
|
|
354
|
+
* fixed problem and a filed bug.
|
|
355
|
+
*/
|
|
356
|
+
export declare function mouseToggleNotice(enabled: boolean): SlashCommandNotice;
|
|
357
|
+
/** TUI-C37 — `/mouse` on a surface with no mouse layer (the plain readline session, the fixture). */
|
|
358
|
+
export declare function mouseUnavailableNotice(): SlashCommandNotice;
|
|
359
|
+
/**
|
|
360
|
+
* TUI-C37 — parse `/mouse [on|off]`. No argument means "toggle", which is what a bare command name
|
|
361
|
+
* usually means; `null` marks an argument that is neither, so the caller can say so rather than
|
|
362
|
+
* guess. `resolve` needs the current state only for the toggle case.
|
|
363
|
+
*/
|
|
364
|
+
export declare function parseMouseArg(args: string[], current: boolean): boolean | null;
|
|
365
|
+
export declare function approvalsRungNotice(approvals: ResolvedApprovals): SlashCommandNotice;
|
|
366
|
+
/**
|
|
367
|
+
* The first sentence of a mode's description, for the one-line forms (the picker rows and the usage
|
|
368
|
+
* hint). Cut at the sentence boundary rather than truncated, so a row never ends mid-clause.
|
|
369
|
+
*
|
|
370
|
+
* **A sentence ends at `.`, `?` or `!`.** The copy this shortens is ordinary prose, and a helper
|
|
371
|
+
* that knows only the period renders a question as `Really?.` and hands back BOTH sentences of
|
|
372
|
+
* `Ready? Then go.` — the whole description in a row sized for one line.
|
|
373
|
+
*
|
|
374
|
+
* A terminator only ends the sentence when a space follows it and no dot precedes it, so an
|
|
375
|
+
* ellipsis reads as the pause it is instead of three sentence boundaries.
|
|
376
|
+
*
|
|
377
|
+
* **A description that is already one sentence keeps its own terminator rather than gaining a
|
|
378
|
+
* second.** Nothing was consumed, so it arrives already terminated and appending unconditionally
|
|
379
|
+
* would render `No gate..`. Every surface showing one line of a mode's copy goes through here, so
|
|
380
|
+
* this is the only place that has to know any of it.
|
|
381
|
+
*/
|
|
382
|
+
export declare function firstSentence(description: string): string;
|
|
383
|
+
/** CFG-39 — one selectable row of the `/approvals` picker. */
|
|
384
|
+
export interface ApprovalPostureChoice {
|
|
385
|
+
/** The mode this row sets. */
|
|
386
|
+
rung: ApprovalRung;
|
|
387
|
+
/** Display spelling ({@link APPROVAL_RUNG_LABELS}) — never the config identifier (§9.1). */
|
|
388
|
+
label: string;
|
|
389
|
+
/** The mode's own one-line description, from {@link APPROVAL_RUNG_DESCRIPTIONS}. */
|
|
390
|
+
description: string;
|
|
391
|
+
/** Whether the session is on this mode right now. */
|
|
392
|
+
current: boolean;
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* CFG-39 — **the picker's rows**: the four postures, in ladder order, each carrying its own copy.
|
|
396
|
+
*
|
|
397
|
+
* **The strings come from {@link APPROVAL_RUNG_DESCRIPTIONS}, never from the menu.** Six surfaces
|
|
398
|
+
* describe these modes; a picker that authored its own text would become the seventh and the one
|
|
399
|
+
* that contradicts the rest. Whoever owns that constant owns this copy too, with no second edit.
|
|
400
|
+
*
|
|
401
|
+
* `write` has no row — it is a modifier of Manual rather than a fifth posture — but it stays
|
|
402
|
+
* settable via `/approvals write`. When the session IS on `write`, no row is marked `current`,
|
|
403
|
+
* which is correct: the caller reports the live mode from its own title rather than letting a
|
|
404
|
+
* picker row claim the session is on Manual when it is not.
|
|
405
|
+
*/
|
|
406
|
+
export declare function approvalPostureChoices(current: ApprovalRung): ApprovalPostureChoice[];
|
|
407
|
+
/**
|
|
408
|
+
* CFG-39 — the picker as TEXT: the selectable list printed in place of the interactive rows. The
|
|
409
|
+
* readline session is what prints it, and that is where every `--no-tui`, piped / non-TTY, CI or
|
|
410
|
+
* missing-Ink run lands.
|
|
411
|
+
*
|
|
412
|
+
* **A surface with no slash-command layer renders nothing from here.** The ACP and AG-UI servers
|
|
413
|
+
* have none, so `/approvals` reaches them in no form at all and this list appears on neither. Do
|
|
414
|
+
* not read a server's tool-approval gate as this list arriving there: that gate asks about a single
|
|
415
|
+
* pending call in the protocol's own request shape and carries no posture copy.
|
|
416
|
+
*
|
|
417
|
+
* The same {@link approvalPostureChoices} the TTY picker renders, so the two cannot list different
|
|
418
|
+
* modes or describe them differently — the text fallback is a rendering of the picker, not a
|
|
419
|
+
* second implementation of it.
|
|
420
|
+
*/
|
|
421
|
+
export declare function approvalPostureLines(current: ApprovalRung): string[];
|
|
422
|
+
/**
|
|
423
|
+
* CFG-27 — the `/approvals` DISPLAY: the mode and its description, the rater profile in the two
|
|
424
|
+
* rated modes, and the allow/deny list sizes. Pure: the surface reads the live posture from the
|
|
425
|
+
* runner and hands it in.
|
|
426
|
+
*
|
|
427
|
+
* CFG-39 — it also carries the selectable list, so `/approvals` with no argument answers "which
|
|
428
|
+
* mode am I on?" and "what else could I be on?" in one place on EVERY surface. On a TTY the TUI
|
|
429
|
+
* renders {@link approvalPostureChoices} as an interactive picker instead; this is what everything
|
|
430
|
+
* else shows.
|
|
431
|
+
*
|
|
432
|
+
* `always: undefined` means the persisted store has not been loaded, and is rendered `—` rather
|
|
433
|
+
* than a misleading `0` — a display must not create the store in order to count it.
|
|
434
|
+
*/
|
|
435
|
+
export declare function approvalsStatusNotice(approvals: ResolvedApprovals, allowlist: {
|
|
436
|
+
session: number;
|
|
437
|
+
always: number | undefined;
|
|
438
|
+
}, deny?: readonly string[], grants?: readonly ApprovalGrant[], trust?: McpAnnotationTrustView, options?: {
|
|
439
|
+
/**
|
|
440
|
+
* CFG-39 — set by a surface that is about to render {@link approvalPostureChoices} as an
|
|
441
|
+
* interactive picker, so the same four modes are not also printed as text right above it.
|
|
442
|
+
*
|
|
443
|
+
* **Opt-OUT, not opt-in**, and that direction is deliberate: every surface that says nothing
|
|
444
|
+
* gets the full text answer, so a new non-TTY surface cannot ship a `/approvals` that silently
|
|
445
|
+
* omits the list. Only the TUI, which demonstrably renders the rows another way, turns it off.
|
|
446
|
+
*/
|
|
447
|
+
interactive?: boolean;
|
|
448
|
+
}): SlashCommandNotice;
|
|
449
|
+
/** EXT-70 §4.7.1 — a request to start or stop believing specific hints from one server. */
|
|
450
|
+
export interface McpTrustRequest {
|
|
451
|
+
/** §4.7.5 — the user's own `mcpServers` config key, case-sensitive. */
|
|
452
|
+
server: string;
|
|
453
|
+
/** The hints this request moves, in canonical spelling. Never empty. */
|
|
454
|
+
hints: ToolAnnotationHint[];
|
|
455
|
+
/** `true` to believe them, `false` to stop. */
|
|
456
|
+
believe: boolean;
|
|
457
|
+
}
|
|
458
|
+
/** Something wrong with a `/approvals trust` invocation that the command explains rather than guesses at. */
|
|
459
|
+
export type ApprovalsUsageProblem = {
|
|
460
|
+
kind: 'trust-missing-server';
|
|
461
|
+
believe: boolean;
|
|
462
|
+
} | {
|
|
463
|
+
kind: 'trust-missing-hints';
|
|
464
|
+
believe: boolean;
|
|
465
|
+
server: string;
|
|
466
|
+
} | {
|
|
467
|
+
kind: 'unknown-hint';
|
|
468
|
+
believe: boolean;
|
|
469
|
+
token: string;
|
|
470
|
+
};
|
|
471
|
+
/** What `/approvals` resolved to, or `null` when the first argument names nothing it knows. */
|
|
472
|
+
export type ApprovalsAction = {
|
|
473
|
+
show: true;
|
|
474
|
+
} | {
|
|
475
|
+
rung: ApprovalRung;
|
|
476
|
+
} | {
|
|
477
|
+
trust: McpTrustRequest;
|
|
478
|
+
} | {
|
|
479
|
+
usage: ApprovalsUsageProblem;
|
|
480
|
+
};
|
|
481
|
+
/**
|
|
482
|
+
* CFG-27/EXT-70 — parse the `/approvals` argument: no arg SHOWS the current posture; any of the
|
|
483
|
+
* five mode names switches to it; `trust` / `untrust` move which of a server's annotation hints are
|
|
484
|
+
* believed (§4.7.1). Returns `null` for an unrecognized first argument so the command renders a
|
|
485
|
+
* usage hint instead of guessing.
|
|
486
|
+
*
|
|
487
|
+
* **All five names are accepted, not the four the picker offers.** `write` is a modifier of
|
|
488
|
+
* `manual` rather than a posture of its own, so it leaves quick access — but it stays fully
|
|
489
|
+
* settable here and in config, which is the whole of what "demoted" means.
|
|
490
|
+
*
|
|
491
|
+
* The retired `read-only` / `auto-safe` / `full-auto` / `ask` spellings are NOT accepted as
|
|
492
|
+
* aliases — 2.0 is a deliberate break, and a silent alias would leave the user believing in a
|
|
493
|
+
* vocabulary the gate no longer has. They are named, with their replacements, by the config-layer
|
|
494
|
+
* error in `RETIRED_APPROVAL_MODES`.
|
|
495
|
+
*
|
|
496
|
+
* **Only the subcommand token is lower-cased.** A server key is the user's own `mcpServers` key
|
|
497
|
+
* (§4.7.5) and is case-sensitive, so folding it would name a different server — one that believes
|
|
498
|
+
* nothing, silently, while the notice reported success. A hint is matched case-insensitively
|
|
499
|
+
* against the fixed vocabulary and echoed back in its **canonical** spelling, so `readonlyhint`
|
|
500
|
+
* resolves rather than vanishing, and what lands in the policy is the name the derivation reads.
|
|
501
|
+
*/
|
|
502
|
+
export declare function parseApprovalsArg(args: string[]): ApprovalsAction | null;
|
|
503
|
+
/**
|
|
504
|
+
* EXT-70 §4.7.1 — usage copy for a `/approvals trust` invocation that named no server, no hint, or
|
|
505
|
+
* a hint that is not one of the four. Each says what is missing and shows the vocabulary, because
|
|
506
|
+
* the hint names are camelCase MCP identifiers nobody guesses.
|
|
507
|
+
*/
|
|
508
|
+
export declare function approvalsTrustUsageNotice(problem: ApprovalsUsageProblem): SlashCommandNotice;
|
|
509
|
+
/**
|
|
510
|
+
* EXT-70 §4.7.1/§4.7.4 — the notice for a landed `/approvals trust` or `/approvals untrust`, built
|
|
511
|
+
* from what the runner RETURNS rather than from what was asked for, so the copy can only describe
|
|
512
|
+
* the trust actually in force.
|
|
513
|
+
*
|
|
514
|
+
* **The withdrawal half states the consequence where the withdrawal happens.** Ceasing to believe a
|
|
515
|
+
* hint pushes it back to the MCP fail-closed default, and for `readOnlyHint`, `openWorldHint` and
|
|
516
|
+
* `destructiveHint` that is a *weakening* — so §4.7.4 will withdraw that server's saved approvals at
|
|
517
|
+
* the next call, with its own notice. That is the correct direction and is not suppressed; what
|
|
518
|
+
* would be wrong is for the user to meet it as a surprise three turns later. `idempotentHint` is the
|
|
519
|
+
* one hint no weakening move names, so withdrawing it invalidates nothing and the line is absent —
|
|
520
|
+
* which is why the line is driven by the runner's `weakening` list rather than by "was anything
|
|
521
|
+
* withdrawn".
|
|
522
|
+
*/
|
|
523
|
+
export declare function approvalsTrustNotice(change: McpAnnotationTrustChange): SlashCommandNotice;
|
|
524
|
+
/**
|
|
525
|
+
* TUI-C18 — resolve a `/reasoning` invocation against the committed turns' reasoning (in transcript
|
|
526
|
+
* order, index 0 = turn 1). Pure, so the whole selection + friendly-notice logic is unit-testable
|
|
527
|
+
* without React:
|
|
528
|
+
*
|
|
529
|
+
* - **no arg** → the most recent turn that actually recorded thinking; if none exists, a friendly
|
|
530
|
+
* info notice (nothing to show).
|
|
531
|
+
* - **`<n>`** → turn `n` (1-based). A non-positive / non-integer / out-of-range `n` → a warn notice;
|
|
532
|
+
* a valid turn that recorded no thinking → an info notice. Otherwise a `reprintReasoning` request.
|
|
533
|
+
*
|
|
534
|
+
* The App renders a `reprintReasoning` result as a fresh reasoning block (reusing the TUI-C15
|
|
535
|
+
* styling) and a `notice` result via the shared `CommandNotice`.
|
|
536
|
+
*/
|
|
537
|
+
export declare function resolveReasoning(reasonings: string[], args: string[]): SlashCommandResult;
|
|
538
|
+
/**
|
|
539
|
+
* GS2-47 — resolve whether the `/debug-dump` archive should be redacted. ON by default; opt out via
|
|
540
|
+
* the config (`debugDump.redact: false`) OR the `--unsafe-no-redact` command flag. Any uncertainty
|
|
541
|
+
* (no/non-object config) defaults to redacting — fail safe. `resolvedConfig` is opaque here, so this
|
|
542
|
+
* reads the flag structurally without depending on the `GthConfig` type.
|
|
543
|
+
*/
|
|
544
|
+
export declare function resolveDebugDumpRedact(resolvedConfig: unknown, args: string[]): boolean;
|
|
545
|
+
/**
|
|
546
|
+
* The `/debug-dump` success notice (a standard 3-line CommandNotice — DL-1: no command reads as
|
|
547
|
+
* "does nothing"). GS2-47 flips the default to REDACTED: when redaction ran (the default) the note
|
|
548
|
+
* is softened ("secrets redacted; review before sharing") and points at the opt-out. When the user
|
|
549
|
+
* opted OUT (raw archive) it is the loud, impossible-to-miss UNSANITIZED warning. Colour follows
|
|
550
|
+
* DL-8 / the tone rule in maintenance/ux-guidelines.md: the safe, redacted default is normal
|
|
551
|
+
* feedback (no `tone` ⇒ info), while the raw opt-out is caution and so `tone: 'warn'` (yellow) —
|
|
552
|
+
* mirroring how `approvalsModeNotice` reserves yellow for the dangerous (gate-off) state. Redaction is
|
|
553
|
+
* best-effort pattern-based, so even the softened note still says review-before-sharing.
|
|
554
|
+
*/
|
|
555
|
+
export declare function debugDumpNotice(archiveDir: string, redacted: boolean): SlashCommandNotice;
|
|
556
|
+
/**
|
|
557
|
+
* Build the default command registry. Returns a fresh array each call so callers may push
|
|
558
|
+
* extension commands onto it (EXT-5) without sharing mutable module state.
|
|
559
|
+
*/
|
|
560
|
+
export declare function createCommandRegistry(): SlashCommand[];
|
|
561
|
+
/**
|
|
562
|
+
* Build the `/help` notice from a registry: one body line per command (`/name — description`),
|
|
563
|
+
* followed by the calling surface's own key bindings when it supplies any (TUI-C63).
|
|
564
|
+
*
|
|
565
|
+
* The bindings are a PARAMETER, never a constant in this module: `/help` is the reference for the
|
|
566
|
+
* surface the reader is looking at, and a key that surface does not have is worse than no entry at
|
|
567
|
+
* all. A surface that passes nothing gets exactly the command list, byte for byte.
|
|
568
|
+
*/
|
|
569
|
+
export declare function formatHelp(registry: SlashCommand[], keyBindings?: readonly KeyBindingGroup[]): SlashCommandNotice;
|
|
570
|
+
/**
|
|
571
|
+
* Dispatch a parsed command against a registry. Unknown commands return a friendly hint
|
|
572
|
+
* rather than throwing, so the component can render it as a system line and never forward
|
|
573
|
+
* the text to the model.
|
|
574
|
+
*
|
|
575
|
+
* EXT-12 — when `options.duringRun` is set (a turn is streaming), commands that are not marked
|
|
576
|
+
* {@link SlashCommand.availableDuringRun} are refused with a friendly notice rather than run,
|
|
577
|
+
* so mid-turn input can only reach the safe, non-mutating commands (`/approvals`, `/verbose`,
|
|
578
|
+
* `/debug`, …). `/help` is always allowed.
|
|
579
|
+
*/
|
|
580
|
+
export declare function dispatchSlashCommand(parsed: ParsedSlashCommand, registry: SlashCommand[], ctx: SlashCommandContext, options?: {
|
|
581
|
+
duringRun?: boolean;
|
|
582
|
+
}): SlashCommandResult;
|